-1

可能重复:
当数组键包含javascript中的字符串时删除它

通过使用 jquery、下划线或本机 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
}
4

5 回答 5

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';
});
于 2012-10-26T08:50:48.850 回答
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 文档

于 2012-10-26T08:45:08.930 回答
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

演示

于 2012-10-26T08:52:03.787 回答
0

利用

delete a[1];

或者

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

或者

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

如果你不想undefined在你的数组中有一个。

为了与 IE8 兼容,您可能需要为 indexOf 添加一个通用补丁

于 2012-10-26T08:45:11.390 回答
0

下划线:

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

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

于 2012-10-26T08:45:42.797 回答