gpt4 book ai didi

javascript - 数组过滤方法传递数据类型而不是谓词

转载 作者:行者123 更新时间:2023-11-30 14:44:13 26 4
gpt4 key购买 nike

我有一个数组,如下所示:

var containers = [2,0,false,"", '12', true];

filter 方法使用如下:

var containers = containers.filter(Boolean);
console.log(containers);

它打印:[ 2, '12', true ]即使将 NumberStringObject 传递给 filter 函数也是如此。根据我的理解,filter 函数接受一个谓词函数。但是这里它接受原始数据类型。谁能解释一下这种行为?

最佳答案

你传递了实际的 bool 函数,所以你实际上将所有值都转换为 bool 值,因为 0"" 是假的,你得到这样的结果.. .

看看这个过滤器在循环中是如何工作的:

Boolean(2); //true
Boolean(0); //false
Boolean(false); //false
Boolean(""); //false
Boolean(12); //true
Boolean(true); //true

我认为您正在寻找的是这样的东西:

var containers = [2,0, false ,"", '12', true];
var containers = containers.filter(function(v) { return "boolean" === typeof v});
console.log(containers); //[false, true]

此外,这些是 JavaScript 中的虚假值列表,供您引用:

  1. undefined:如果值未定义且为undefined
  2. null:如果为 null,例如,如果 DOM 元素不存在...
  3. 空字符串:''
  4. 0:数字零
  5. NaN:不是数字

关于javascript - 数组过滤方法传递数据类型而不是谓词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49205417/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com