【问题标题】:How does this function works,这个功能是如何工作的,
【发布时间】:2017-07-12 20:01:39
【问题描述】:

这是代码

var diffArray = function(a, b) {
    return b.filter(function(value) { return a.indexOf(value) === -1; });
};

输入是:

diffArray([1, "3", 3, "4"], [1, "1", 3, 4]);

我不明白为什么它会返回:["1", 4]

请您向我澄清一下。

【问题讨论】:

标签: javascript algorithm function ecmascript-5


【解决方案1】:

解释一些事情:

Array.indexOf 方法是一种在数组中搜索特定元素的方法,如果找到,则返回该元素的索引。如果不是,则返回 -1。

Array.filter 接收回调函数。这个回调函数为数组的每个元素调用一次,如果元素应该出现在过滤结果中,它应该返回 true,否则返回 false。 示例:[1, 2, 3].filter(function(value) { return value < 3 }); 将返回 [1, 2]

因此,您将 2 个数组传递给 diffArray。 b 数组正在被过滤,过滤器函数在数组中搜索 b 数组的每个元素,并返回 b 数组中不存在于数组中的每个元素(每个具有 indexOf === -1 的元素);

所以 b 元素是[1, "1", 3, 4]。让我们一步一步来看看:

  • 1 存在于 a 中,因此不会返回,因为我们正在寻找 a 中不存在的元素
  • “1”在 a 中不存在,因此被返回。一个数组有 1 个元素,但这是不同类型的 "1'
  • 3 is present is a 所以不返回
  • 4 不存在于所以返回。再次与“1”不同类型的相同大小写。

我希望现在更清楚了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-29
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 2020-12-28
    • 2020-11-12
    • 2019-06-15
    相关资源
    最近更新 更多