将数字附加到以逗号分隔的列表中

时间:2011-08-02 01:10:24

标签: javascript jquery string

列表如下:

3434,346,1,6,46

如何使用javascript将数字附加到其中,但只有在它尚不存在的情况下?

3 个答案:

答案 0 :(得分:13)

假设你的初始值是一个字符串(你没说)。

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()检查值的存在,仅在它不存在时才添加。

然后我使用join将值转换回字符串。

答案 1 :(得分:2)

如果是字符串,您可以使用.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
}

答案 2 :(得分:2)

您还可以使用正则表达式:

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,“垫片”或跨浏览器问题。 : - )