从字符串数组中删除字符串

时间:2013-03-14 13:23:29

标签: javascript arrays splice array-splice

我是JavaScript的初学者。

我有一个像这样的字符串数组:123,432,123,543,123,123

我想从此字符串中删除3dr编号。

我找到了以下函数来从字符串数组中删除文本值,但它不适用于包含重复值的数组。

Array.prototype.removeByValue = function (val) {

    for (var i = 0; i < this.length; i++) {
        if (this[i] == val) {
            this.splice(i, 1);
            break;
        }
    }
} 

对于解决此问题的任何建议表示赞赏。

3 个答案:

答案 0 :(得分:1)

你可以使用过滤器:

var ary = ['three', 'seven', 'eleven'];

ary = ary.filter(function(v) {
    return v !== 'seven';
});

并扩展您的数组

Array.prototype.remove = function(value) {
    return ary.filter(function(v) {
        return v != value;
    });

}

var ary = ['three', 'seven', 'eleven'];
ary = ary.remove('seven'),
console.log(ary)

答案 1 :(得分:0)

然后继续前进:

Array.prototype.removeByValue = function (val) {

    for (var i = 0; i < this.length; i++) {
        if (this[i] == val) {
            this.splice(i, 1); 
            i--; //Decrement after removing
            //No break
        }
    }
} 

更惯用的方式是this.splice(i--, 1),但这应该更清楚它们发生的顺序。

var a = [1,2,1,1,2,2];
a.removeByValue(1);
a; //[2, 2, 2]

答案 2 :(得分:-1)

为解决这个问题,我为每个元素添加了一个唯一的ID,例如{A1; 123,A2; 432,A3; 123,A4; 543,A5; 123,A6; 123},在这种情况下查找特定的具有相同功能的元素更容易。