簡體   English   中英

如何使用JavaScript從數組中刪除元素

[英]How to remove element from array using javascript

我有2個數組,並且要根據第一個數組上的位置編號刪除第二個數組的元素。

var notexists = []; //value is "1","5","8" on 0,1,2nd position. 
var copyrequiredfields = [];//Value is "a","b","c","d","e","f",...
for (var i = 0; i < notexists.length; i++) {
     copyrequiredfields.splice(parseInt(notexists[i]), 1);
}

按照示例,我想從copyrequiredfields中刪除第1個第5個和第8個元素。 請提出一些答案。

創建一個新數組,迭代copyrequired字段,當索引不存在時,將其忽略。

例:

var notexist = [1,2,5];
var copyrequiredfields = ['a','b','c','d','e','f','g'];
//create a index map
var index_map = {};
for(var i = 0; i < notexist.length; i++){
    index_map[notexist[i]] = true;
}
//remove the elements
var newarray = [];
for(var i = 0; i < copyrequiredfields.length; i++){
    if(!index_map[i]){
        newarray.push(copyrequiredfields[i]);
    }
}
copyrequiredfields = newarray;

在JS中,數組的索引以0而不是1開頭,因此您只需在拼接前從值中減去1。 其余代碼很好。

一個問題是,當您從數組中刪除元素時,將元素向后移1個位置后,該元素就會消失。 這將為您提供錯誤的輸出。 1 hack是計算被刪除的元素的數量以計算運動。

更好的解決方案是使用array.filter

Array.splice

 var notexists = ["1", "5", "8"]; //value is on 0,1,2nd position. var copyrequiredfields = ["a", "b", "c", "d", "e", "f", "g", "h", "i"]; //Value is "a","b","c","d","e","f",... var count=0; for (var i = 0; i < notexists.length; i++) { console.log(+notexists[i] - 1) copyrequiredfields.splice(+notexists[i]-1-count++, 1); } console.log(copyrequiredfields) 

數組過濾器

 var notexists = ["1", "5", "8"]; //value is on 0,1,2nd position. var copyrequiredfields = ["a", "b", "c", "d", "e", "f", "g", "h", "i"]; //Value is "a","b","c","d","e","f",... var r = copyrequiredfields.filter((x,i)=>notexists.indexOf((i+1).toString()) === -1) console.log(r) 

您可以復制整個數組,除了不再需要的部分:

var tempCopy = [];
for (var i=0; i < copyrequiredfields.length; i++)
    if(notexists.indexOf(i)==-1)
        tempCopy.push(copyrequiredfields[i]);
copyrequiredfields = tempCopy;

問候!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM