Javascript - 如何在给定索引处从数组中删除项目

时间:2012-12-27 04:57:52

标签: javascript splice

  

可能重复:
  Strip/remove values in array at certain indices

如何使用Javascript从给定索引处的数组中删除一组元素。

说我有一个索引数组:

var indices = [0, 1, 3]

我想从这些给定indices的其他数组中删除元素。其他阵列恰好是:

var cars = ["Cow", "Dog", "Ferrari", "Monkey", "Ford"]

所以,删除后我想从“{1}}数组中删除”Cow“,”Dog“,”Monkey“

我尝试过cars方式:

splice

但是每次项目拼接时,这段代码都会改变for(var i = 0; i < indices.length; i++){ cars.splice(indices[i], 1); } 数组的索引!

4 个答案:

答案 0 :(得分:2)

试试这个

var cars = ["Cow", "Dog", "Ferrari", "Monkey", "Ford"];
console.log(cars);

cars.each(function(val, index){
    // You can use jQuery inArray also.  
    //For Ex: if(jQuery.inArray(index, indices)){........}
    if(val=="Cow" || val=="Dog" || val=="Monkey" ){
        cars.splice(index, 1);
    }
});
console.log(cars);

JAVASCRIPT:然后使用.forEach代替.each

答案 1 :(得分:0)

你可以从最后一个元素开始:

for(var i = indices.length-1; i >= 0; i--){
   cars.splice(indices[i], 1);
}

答案 2 :(得分:0)

您可以使用delete删除元素而不修改索引。

var a = [1, 2, 3, 4, 5];
delete a[2]; // deletes '3'
console.log(a); // prints [1, 2, undefined, 4, 5]

您可以使用splice()删除元素并移动其余元素以填充已删除的索引

var b = [1, 2, 3, 4, 5];
b.splice(2, 1); // deletes '3' and shifts the rest to left
console.log(b); // prints [1, 2, 4, 5]

答案 3 :(得分:-1)

Splice方法完全删除项目,所以正如你所说&#34;但是这个代码恰好在每次拼接一个项目时改变汽车对象的索引!&#34;它将严格删除元素。您可以使用命名约定ID作为&#34;已删除&#34;或者任何熟悉的命名ID,而不是删除(删除)元素,如果你想维护相同的数组索引

for(var i = 0; i&lt; indices.length; i ++){    汽车[indices [i]] =&#34;已删除&#34 ;; }

使用此功能您可以根据需要维护相同的数组索引。

请你解释为什么-1?它不值得,或证明它。