JS新手,我遇到了这个问题。我知道我只是缺少一些东西。我很感激任何帮助。我包含了我尝试过的代码。 (别笑。)
//Loop through arr removing all values that aren't even
//hint x % 2 --> checks for even numbers
var arr = [1,2,3,6,22,98,45,23,22,12];
for (var i = 0; i > arr.length; i++) {
while (i % 2 !== 0) {
arr.splice(i);
}
}
alert(arr);
答案 0 :(得分:4)
这是我从一个要点得到的一个很好的技巧,你实际上需要使用反向循环以避免弄乱索引
for (var i = arr.length; i >= 0; i--) {
if (i % 2 !== 0) {
arr.splice(i);
}
}
这是一个crossbrowser选项,您也可以像@agreco所说的那样使用过滤器,但不是每个浏览器都可用
答案 1 :(得分:3)
如果您要定位较新的浏览器或节点,也可以使用.filter:
var arr2 = arr.filter(function(o) {
return o % 2 !== 0;
});
答案 2 :(得分:1)
var arr = [1,2,3,6,22,98,45,23,22,12];
var arr2=[];
arr.forEach(function(e){if (e%2!==0) arr2.push(e)});
alert(arr2);
所以你有一个名为arr
的数组,你想从这个数组构建一个新的数组。您附加了一个内置于现代javascript中的方法,名为" forEach"这意味着对于数组的每个值,它执行()
之间的函数。变量e
表示元素,它允许您访问它所在的当前数组项。因此,如果e%2!== 0(即如果e为奇数),则将其推送到新阵列。然后在循环完成所有内容之后,你就拥有了新阵列。
答案 3 :(得分:0)
var arr = [1,2,3,6,22,98,45,23,22,12];
for ( var i = arr.length; i >= 0; i-- ) {
if( arr[i] % 2 !== 0 ) {
// splice takes two arguments at least index to start removing and the number of elements to remove
arr.splice( i, 1 );
}
}
console.log(arr);