我已经开始学习Javascript,并且正在做一些简单的练习。给定一个数字数组,返回不均匀的数字。我既使用了“古典”方式也使用了箭头功能。但是他们的行为有点怪异。这是箭头功能:
const answer2 = [1, 2, 3, 4, 5, 6, 7, 8, 9].filter(value => {
return value % 2 != 0;
})
对我来说似乎不错,而且似乎可以正常工作。然后我做了经典的:
function filterArrayToOdd(inputArray) {
let outputArray = [];
for (let i = 0; i < inputArray.length; i++) {
if (i % 2 != 0) {
outputArray.push(inputArray[i]);
}
}
return outputArray;
}
这将返回一个包含所有偶数的数组!可以将工作方式从!=更改为==,但是为什么?!
答案 0 :(得分:3)
如果您的测试数组不是顺序排列的[1,2,3,4,5,6,7,8,9],而是像[2、5、9、11, 12、3]。
依次,您可能会对此问题产生误报,因为正如@Pointy所说,在第二种情况下,您正在检查数组索引,而不是实际值。
// instead of
if (i % 2 != 0) {
// do this:
if (inputArray[i] % 2 != 0) {