从数组中添加/删除元素的最佳方法是什么?

时间:2012-10-26 08:42:59

标签: javascript jquery arrays underscore.js

  

可能重复:
  Delete an array key when it contains a string in javascript

使用jquery,underscore或native javaScript我想删除或添加元素到数组。

这是我的代码;

var a = ['4', '5'];
var remove = false/true; 

if(!remove) {
     a.push('6'); // it works
} else {
     a.remove(5); // I have no idea how to perform this in a very dry way
}

5 个答案:

答案 0 :(得分:2)

原生JavaScript:

a.splice(1, 1); // ['5']
a // ['4']

您可以使用新元素替换值:

var a = [1, 2, 3];
a.splice(1, 1, -1, -2) // [2]
a // [1, -1, -2, 3]

请参阅MDN documentation

答案 1 :(得分:2)

如果你结合使用NULL和dystroy的答案,你可以在纯粹的js中得到Niko的答案(ish):

a.splice(a.indexOf('5'),1);

或者如果你想删除多个'5'

var p;
while( (p = a.indexOf('5')) != -1 ){
    a.splice(p, 1);
}

一种更简洁的方法,相当不理想,只支持现代浏览器(并且还创建一个新数组) - 但仍然有效且更灵活:

a = a.filter(function(v){
  return v != '5';
});

答案 2 :(得分:0)

使用

delete a[1];

delete a[a.indexOf('5')];

a.splice(a.indexOf('5'), 1);

如果您不希望阵列中有undefined

为了与IE8兼容,您可能需要add a common patch for indexOf

答案 3 :(得分:0)

下划线

a = _.without(a, '5');

请参阅http://underscorejs.org/#without

答案 4 :(得分:0)

使用splice()方法:

if(typeof Array.prototype.remove === "undefined") {
    Array.prototype.remove = function(e) {
        this.splice(this.indexOf(e), 1);
    }
}

var a = ['4', '5'];
a.remove('5');
alert(a);​

打印:

4

Demo