在知道之前,我的迭代一直运行良好且花花公子。我遇到了一个空数组,而 .every() 方法不适用于这种值。
这是验证:
if(oJSonElementByIndex[sColumnName].every(x => typeof x == 'number'))
¿ 还有其他选择吗?提前致谢。
在知道之前,我的迭代一直运行良好且花花公子。我遇到了一个空数组,而 .every() 方法不适用于这种值。
这是验证:
if(oJSonElementByIndex[sColumnName].every(x => typeof x == 'number'))
¿ 还有其他选择吗?提前致谢。
如果数组中没有元素,则数组中的每个元素都满足条件。因此它返回真。要达到相反的效果:
arr.length && arr.every(/*...*/)
所以关于“每个”谓词在空数组上实现的评论,以及关于使用array.length而不只是数组的评论让我把这个片段放在一起来说明。
这里要注意的是空数组的真实性,空数组长度的虚假性 - 零,以及有点不直观的逻辑想法,如果你没有谓词,那么它们都没有通过条件:
const empty = []
const typeofNumber = (x) => ( typeof x === 'number' )
console.log(`an empty array will return ${empty.every(typeofNumber)} on an every, since "every" predicate fulfilled the condition`)
if(empty.length && empty.every(typeofNumber)) {
console.log('empty array length and every are truthy')
} else {
console.log('empty array length and every are falsey')
}
if(empty && empty.every(typeofNumber)) {
console.log('empty array and every are truthy')
} else {
console.log('empty array and every are falsey')
}