字符串操作 - 从列表中删除元素

时间:2011-06-06 21:23:38

标签: javascript

我有一个以逗号分隔的值列表,我需要删除一个等于某个值的值。

myList = '10,20,30';
myList.remove(20); // === '10,30'

5 个答案:

答案 0 :(得分:2)

我正在匆匆离开,但解决方案的组成部分可能是:

  • String#split,它根据分隔符将字符串拆分为数组。
  • Array#indexOf,它在数组中找到一个条目(某些较旧的浏览器可能没有它;在那些,你必须做一个循环)。
  • Array#splice,其中(除其他外)从数组中删除条目。
  • Array#join,它使用给定的分隔符将数组连接成一个字符串。

......如果有可能的话,可能会在那里混合处理杂散空间。

当然,您可以在任一端放置逗号,然后使用String#indexOf搜索“,20”,并使用String#substring抓取前面和后面的位。但有趣的是。 ;-)(而且看起来有点脆弱。)

答案 1 :(得分:1)

var myArray = myList.split(',');
myArray.splice(1,1); // Remove one element at index 1, which is 20 in your example
myList = myArray.toString();

答案 2 :(得分:1)

有些人几乎replace正在工作。

var lists = ['20', '10,20', '20,30', '10,20,30', '120,200,2020'];
for (var i=0; i<lists.length; ++i) {
    lists[i] = lists[i].replace(/(^|,)20,|(^|,)20$/,'$1');
}

结果:

["", "10", "30", "10,30", "120,200,2020"]

答案 3 :(得分:1)

以下是一些经过测试的jslint ed代码,可以满足您的要求。

if (!String.prototype.removeListItem) {
   String.prototype.removeListItem = function(value, delimiter) {
      delimiter = delimiter || ',';
      value = value.toString();
      var arr = this.split(delimiter),
         index = arr.indexOf(value);
      while (index >= 0) {
         arr.splice(index, 1);
         index = arr.indexOf(value);
      }
      return arr.join(delimiter);
   };
}

alert('10,20,30,120,200'.removeListItem(20));
// yields '10,30,120,200'

但是,我怀疑为什么要这样做。数组应存储在数组对象中,而不是存储在字符串文字中。如果需要显示列表,请在显示时转换为分隔列表。如果您的输入是字符串,则在输入时将其拆分并将其作为数组保存在内部。我非常坚信这对您来说是最好的做法,从长远来看,您将更容易维护更容易理解的代码。

答案 4 :(得分:0)

拆分字符串以提供数组。将数据放入数组后,删除需要删除的元素。然后再次输出字符串。

或者你可以用''找到并替换'20'。