[英]Remove array elements by index
我似乎有一个大脑冻结,我无法通过索引删除JS数组元素。 下面有什么根本愚蠢的东西吗?
var els;
[0, 1, 3]
0: 0
1: 1
2: 3
["Colour", "Font", "Icon", "Line 1"]
0: "Colour"
1: "Font"
2: "Icon"
3: "Text"
我想要做的就是使用索引位置0,1和3(在此示例中)从数组中删除元素 - 但是,当我使用splice尝试此操作时,它会混乱索引。
看到:
els.each(function(key, val) {
console.log(key);
req-fields.splice(key,1);
});
尝试这样的事情
function removeIndex(array, index) {
delete array[index];
array = array.filter(function(element) {
return element != undefined
});
return array;
}
例
removeIndex([1,4,7,13,41,16],3);
=> [1,4,7,41,16]
说明
要从数组中删除元素,请使用delete
关键字。 这将使该索引处的值undefined
。 然后,您需要过滤数组,并删除未定义的元素。
您可以为每个拼接操作调整拼接的索引。
var fields = ["Colour", "Font", "Icon", "Line 1"], els = [0, 1, 3]; els.forEach(function (val, i) { fields.splice(val - i, 1); }); document.write('<pre>' + JSON.stringify(fields, 0, 4) + '</pre>');
问题是当你删除元素0时,数组向下移动1并且你的其他元素位于错误的位置。 解决此问题的一种方法是按降序对输入els
数组进行排序,使其弹出元素3,然后是1,然后是0。
els.sort(function(a, b){return b-a});
els.each(function(key, val) {
console.log(key);
req-fields.splice(key,1);
});
理查德汉密尔顿的变化。 请注意,我们两个都将返回一个新数组,而不是实际修改原始数组对象。
function removeIndexes(array, indexes) {
return array.filter(function(element, i) {
return indexes.indexOf(i) === -1;
});
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.