Добавить номер в список через запятую - PullRequest
7 голосов
/ 02 августа 2011

список выглядит так:

3434,346,1,6,46

Как я могу добавить к нему число с помощью javascript, но только если его в нем еще нет?

Ответы [ 3 ]

13 голосов
/ 02 августа 2011

Предполагая, что ваше начальное значение является строкой (вы не сказали).

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 (), добавляя только, если оно не существует.

Затем я преобразую значение обратно в строку, используя соединение.

2 голосов
/ 02 августа 2011

Вы также можете использовать регулярное выражение:

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, "прокладок" или перекрестныхвзломщик вопросов.: -)

2 голосов
/ 02 августа 2011

Если это строка, вы можете использовать функции .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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...