【发布时间】:2019-12-20 04:16:34
【问题描述】:
我有一个大小为 5 的数组,在每个元素中,我用相应的子数组填充,如下所示:
let equalSums = new Array(5);
for (let i = 0; i < equalSums.length; i++) {
equalSums[i] = new Array(5);
}
console.log(equalSums);
/*
[ [ , , , , ],
[ , , , , ],
[ , , , , ],
[ , , , , ],
[ , , , , ] ]
*/
在错误地找到等于给定数字(在本例中为 3)的连续子数组后,我将总和元素等于 3 的子数组推送到此 equalSum 数组,现在它看起来像这样:
[ [ , , , , ],
[ , , , , ],
[ , , , , ],
[ , , , , ],
[ , , , , ],
[ 1, 2 ],
[ 2, 1 ],
[ 3 ] ]
问题是我想删除所有空子数组,然后我执行以下操作:
let rs = equalSums.filter(e => e.every(x => x != ""));
console.log(rs);
/*
[ [ , , , , ],
[ , , , , ],
[ , , , , ],
[ , , , , ],
[ , , , , ],
[ 1, 2 ],
[ 2, 1 ],
[ 3 ] ]
/*
还是一样,它不会删除空子数组。
但是,我改用some,它给了我想要的结果:
let rs = equalSums.filter(e => e.some(x => x != ""));
console.log(rs);
/*
[ [ 1, 2 ], [ 2, 1 ], [ 3 ] ]
*/
谁能解释一下为什么every 不起作用而some 起作用?
【问题讨论】:
标签: javascript arrays