如何使用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);
}
数组的索引!
答案 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?它不值得,或证明它。