gpt4 book ai didi

javascript - 为什么 Array.some() 方法表现不同?

转载 作者:行者123 更新时间:2023-12-05 00:30:51 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Why do map, every, and other array functions skip empty values?

(4 个回答)


17 天前关闭。




我有一个包含空元素的数组。

let arr = ['item 1', 'item 2', , 'item 3', , 'item 4', 'item 5'];
我试图通过使用 Array.some() 找出数组中是否有任何空元素方法,但它返回false。

// Input array
const arr = ['item 1', 'item 2', , 'item 3', , 'item 4', 'item 5'];

// If you see in console, empty element has been filled with undefined
console.log(arr); // ["item 1","item 2",undefined,"item 3",undefined,"item 4","item 5"]

// Now I am just checking if is there any falsy value in an array. Ideally it should return true as we have undefined values in an arr but it is returning `false`.
console.log(arr.some(item => !item)); // false

还有很多其他方法可以检查是否有 undefined数组中的值,但在这里我特别询问 Array.some() 行为。如果我用 undefined 显式替换空元素,那么它将返回 true .

const arr = ['item 1', 'item 2', undefined, 'item 3', undefined, 'item 4', 'item 5'];

console.log(arr.some(item => !item)); // true

有人可以知道它为什么会这样吗?请不要提供任何替代解决方案,因为我知道其他替代解决方案。

最佳答案

MDN :

The some() method executes the callbackFn function once for each element present in the array until it finds the one where callbackFn returns a truthy value (a value that becomes true when converted to a Boolean). If such an element is found, some() immediately returns true. Otherwise, some() returns false. callbackFn is invoked only for indexes of the array with assigned values. It is not invoked for indexes which have been deleted or which have never been assigned values.


你可以在这里看到:

const arr = ['item 1', 'item 2', , 'item 3', , 'item 4', 'item 5'];
console.log(arr.some((item, index) => {
console.log(item, index);
return !item
}));


If I will explicitly replace the empty elements with undefined, then it will return true.


这就是“从未分配过值”和“被分配了 undefined 值”之间的区别。

关于javascript - 为什么 Array.some() 方法表现不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73121348/

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