将数字附加到以逗号分隔的列表中
该列表看起来像:
3434,346,1,6,46
我如何在javascript中附加一个数字,但只有当它不存在时才使用它?
假设你的初始值是一个字符串(你没有说)。
var listOfNumbers = '3434,346,1,6,46', add = 34332;
var numbers = listOfNumbers.split(',');
if(numbers.indexOf(add)!=-1) {
numbers.push(add);
}
listOfNumbers = numbers.join(',');
基本上我将字符串转换为数组,使用indexOf()检查值的存在,只有当它不存在时才添加。
然后我使用连接将该值转换回字符串。
如果这是一个字符串,则可以使用.split()
和.join()
函数以及.push()
:
var data = '3434,346,1,6,46';
var arr = data.split(',');
var add = newInt;
arr.push(newInt);
data = arr.join(',');
如果这已经是一个数组,你可以使用.push()
:
var data = [3434,346,1,6,46];
var add = newInt;
data.push(add);
更新:没有读最后一行来检查重复项,我能想到的最好的方法是循环:
var data = [3434,346,1,6,46];
var add = newInt;
var exists = false;
for (var i = 0; i < input.length; i++) {
if (data[i] == add) {
exists = true;
break;
}
}
if (!exists) {
data.push(add);
// then you would join if you wanted a string
}
你也可以使用正则表达式:
function appendConditional(s, n) {
var re = new RegExp('(^|b)' + n + '(b|$)');
if (!re.test(s)) {
return s + (s.length? ',' : '') + n;
}
return s;
}
var nums = '3434,346,1,6,46'
alert( appendConditional(nums, '12') ); // '3434,346,1,6,46,12'
alert( appendConditional(nums, '6') ); // '3434,346,1,6,46'
哦,因为有些人真的很喜欢三元运算符和复杂的短代码:
function appendConditional(s, n) {
var re = new RegExp('(^|b)' + n + '(b|$)');
return s + (re.test(s)? '' : (''+s? ',':'') + n );
}
没有jQuery,“垫片”或跨浏览器问题。 :-)
链接地址: http://www.djcxy.com/p/74959.html