开发者问题收集

TypeError:无法使用 array.includes 将未定义或 null 转换为对象

2019-11-06
199

我不明白为什么以下代码会抛出“TypeError:无法将未定义或空值转换为对象”

const array = [1, 2];

[3, 4].every(array.includes);
2个回答

您需要将一个函数传递给 .every() ,该函数将当前元素作为参数:

[3, 4].every(element => array.includes(element));

const array = [1, 2];

console.log(
    [3, 4].every(element => array.includes(element))
);

console.log(
    [1, 2].every(element => array.includes(element))
);
NullDev
2019-11-06

您没有绑定它

const array = [1, 2];

const r1 = [1, 2].every(array.includes.bind(array));
const r2 = [3, 4].every(array.includes.bind(array));

--- 编辑

以上内容不正确,因为 every 回调将当前项目的索引作为第二个参数,但 array.includes 将 fromIndex 作为第二个参数。感谢评论中的 Nina Scholz。

您想要的是

[1,2].every(n => arr.includes(n));
TKoL
2019-11-06