我有一个以逗号分隔的值列表,我需要删除一个等于某个值的值。
myList = '10,20,30';
myList.remove(20); // === '10,30'
答案 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'。