2013-03-14 5 views
-1

Я очень новичок в 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; 
     } 
    } 
} 

Любые предложения по решению этой проблемы приветствуются.

+0

Предположительно у вас есть такой массив: '[123, 432, 123, 543, 123, 123]'. Вы просто хотите удалить третий элемент, какой бы он ни был? – lonesomeday

+0

@ lonesomeday, это имеет значение. –

ответ

-1

Чтобы решить эту проблему, я добавил уникальный идентификатор для каждого элемента, как {A1; 123, A2; 432, A3; 123, A4; 543, A5; 123, A6; 123}, и в этом Случай с нахождением конкретного элемента намного проще с той же функцией.

+0

, если вы это сделаете, это не массив, его объект! – silly

+0

его массив, @silly !!! Неважно, какие у вас персонажи в ваших элементах? @silly –

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) 
+0

Но это не на месте, любые другие ссылки все еще указывают на массив с '" три семь одиннадцать "' – Esailija

+0

правильный .... .... – silly

+0

Спасибо, это сработало со мной с некоторыми изменениями! –

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] 
Смежные вопросы