如何使用javascript从数组中删除元素

如何使用javascript从数组中删除元素,javascript,jquery,arrays,Javascript,Jquery,Arrays,我有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(parseI

我有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);
}
var notexists=[]//值在0,1,2位置为“1”、“5”、“8”。
var copyrequiredfields=[]//值为“a”、“b”、“c”、“d”、“e”、“f”,。。。
for(var i=0;i
根据示例,我想从copyrequiredfields中删除第1个、第5个和第8个元素。
请给出一些答案。

创建一个新数组,迭代copyrequiredfields,当Note中的索引存在时,忽略它

例如:

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;
var notexist=[1,2,5];
var copyrequiredfields=['a','b','c','d','e','f','g'];
//创建索引映射
var index_map={};
for(var i=0;i
创建一个新数组,迭代copyrequiredfields,当Note中的索引存在时,忽略它

例如:

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;
var notexist=[1,2,5];
var copyrequiredfields=['a','b','c','d','e','f','g'];
//创建索引映射
var index_map={};
for(var i=0;i
您可以复制整个阵列,但不再需要的部分除外:

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

欢迎

您可以复制整个阵列,除了不再需要的部分:

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

欢迎

在JS中,数组的索引从
0
开始,而不是
1
,所以在拼接之前只需从值中减去1即可。代码的其余部分很好

一个问题是,当您从数组中移除元素时,它之后的元素会向后移动1个位置。这将给您错误的输出。1 hack是计算移除元素的数量以计算移动

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

阵列拼接
var notexists=[“1”、“5”、“8”]//值位于0,1,2位置。
var copyrequiredfields=[“a”、“b”、“c”、“d”、“e”、“f”、“g”、“h”、“i”]//值为“a”、“b”、“c”、“d”、“e”、“f”,。。。
var计数=0;
for(var i=0;ilog(copyrequiredfields)
在JS中,数组的索引从
0
开始,而不是
1
,所以在拼接之前只需从值中减去1即可。代码的其余部分很好

一个问题是,当您从数组中移除元素时,它之后的元素会向后移动1个位置。这将给您错误的输出。1 hack是计算移除元素的数量以计算移动

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

阵列拼接
var notexists=[“1”、“5”、“8”]//值位于0,1,2位置。
var copyrequiredfields=[“a”、“b”、“c”、“d”、“e”、“f”、“g”、“h”、“i”]//值为“a”、“b”、“c”、“d”、“e”、“f”,。。。
var计数=0;
for(var i=0;ilog(copyrequiredfields)
可能有很多方法可以做到这一点。你能更详细地说明你的总体目标是什么吗?如果我们知道您为什么要这样做,就更容易提出解决方案。如果您是根据位置来计算结果,请使用
slice
。当然,
slice
不会像
splice
那样影响初始数组。请注意,
splice
需要计数,而不是位置。所以说第一个元素是指
a
?@Rajesh是的,我指的是第一个元素element@chhaya_patel我用
array.splice
array.filter
添加了答案。希望有帮助!可能有很多方法可以做到这一点。你能更详细地说明你的总体目标是什么吗?如果我们知道您为什么要这样做,就更容易提出解决方案。如果您是根据位置来计算结果,请使用
slice
。当然,
slice
不会像
splice
那样影响初始数组。请注意,
splice
需要计数,而不是位置。所以说第一个元素是指
a
?@Rajesh是的,我指的是第一个元素element@chhaya_patel我用
array.splice
array.filter
添加了答案。希望有帮助!