【发布时间】:2017-07-15 22:58:15
【问题描述】:
我正在做一个小练习: 问题是我想要这个:
=> ['kept','kept']
但是,相反,我不断得到这个:
function keep(array, keeper) {
//This will return an array of undefined's and 'kept's
// =>[ 'kept', undefined, 'kept', undefined, undefined ]
matchingNumbers = array.map(function matching(element){
if (element === keeper) {
return element;
}
});
//Eliminate all undefined's from the matchingNumbers array
matchingLength = matchingNumbers.length;
for (var i = 1; i < matchingLength; i++) {
if(matchingNumbers[i] === undefined) {
(matchingNumbers.splice(i, 1));
}
}
return matchingNumbers;
}
keep(['kept', 'thirty', 'kept', 2, 1], 'kept')
我正在尝试将所有未定义的 matchNumbers 与 for 循环拼接,那么为什么还有最后一个未定义的剩余?
【问题讨论】:
-
您的
i在每次迭代后都会增加,但您的数组同时会丢失元素,因此增加的i并不总是意味着“下一个元素”。 -
首先,数组从索引 0 开始...其次,Array#filter
-
如果您查看上面链接中的 Polyfill,您将了解您应该如何编写代码:p
-
这不是链接问题@Xufo的真正副本
标签: javascript