La liste ressemble à: p>
Comment puis-je ajouter un numéro avec JavaScript, mais seulement si cela n'existe pas déjà? P> 3434,346,1,6,46 code> p>
3 Réponses :
En supposant que votre valeur initiale est une chaîne (vous n'avez pas dit).
var listOfNumbers = '3434,346,1,6,46', add = 34332;
var numbers = listOfNumbers.split(',');
if(numbers.indexOf(add)!=-1) {
numbers.push(add);
}
listOfNumbers = numbers.join(',');
array.pototype.indexof code> n'est pas pris en charge dans les navigateurs plus anciens, vous auriez donc besoin d'une cale. De plus, vous devriez vérifier ! = - 1 code>, car il retournera un faux négatif si le numéro est dans la première fente.
En tant que note latérale, son IE8 + vous seriez donc beaucoup mieux intégré à un array.indexof code> Stackoverflow.com/questions/143847/...
Compte tenu des balises indiquent que l'affiche utilise JQuery, l'équivalent jQuery de $. Inarray (valeur, Array) code> doit être compatible avec navigateur croisé et remplacer directement array.indexof () code>. Comme avec indexofofof () code>, n'oubliez pas de vérifier le résultat! = -1.
Si c'est une chaîne, vous pouvez utiliser le .split () code> et .join () code> fonction, ainsi que .push () Code>: 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
}
Vous n'avez pas tenu compte des doublons.
À peine "simple". Voir les commentaires sur la réponse de Simjay.
Eek, et j'ai eu affaire à JavaScript suffisamment pour savoir que les tableaux n'ont pas d'index de () ~ ~ ~ devinez ce pas simple. EDIT: Je suppose qu'ils ont fait? Oh je suis censé l'éviter. Bien alors je fais.
Vous pouvez également utiliser une expression régulière:
function appendConditional(s, n) {
var re = new RegExp('(^|\\b)' + n + '(\\b|$)');
return s + (re.test(s)? '' : (''+s? ',':'') + n );
}
Encore une fois, veuillez arrêter d'écrire des balises dans vos titres.