[英]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
。
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.