Chaque élément de ce tableau est un certain nombre.
var items = Array(523,3452,334,31, ...5346);
Comment puis-je remplacer un certain nombre avec un tableau par un nouveau?
Par exemple, nous voulons remplacer 3452 par 1010, comment ferions-nous cela?
javascript
arrays
James
la source
la source
replace
méthode pour les tableaux?Réponses:
Il est également recommandé de ne pas utiliser la méthode constructeur pour initialiser vos tableaux. Utilisez plutôt la syntaxe littérale:
Vous pouvez également utiliser l'
~
opérateur si vous êtes en JavaScript laconique et que vous souhaitez raccourcir la-1
comparaison:Parfois, j'aime même écrire une
contains
fonction pour résumer cette vérification et faciliter la compréhension de ce qui se passe. Ce qui est génial, c'est que cela fonctionne sur les tableaux et les chaînes à la fois:En commençant par ES6 / ES2015 pour les chaînes et proposé pour ES2016 pour les tableaux, vous pouvez plus facilement déterminer si une source contient une autre valeur:
la source
contains
:var contains = (a, b) => !!~a.indexOf(b)
: PArray.prototype.includes
plutôt.in
pour voir si un objet a une clé (par exemple,'property' in obj
), ou vous pouvez également parcourir les valeurs d'un objet avecObject.values(obj).forEach(value => {})
.La
Array.indexOf()
méthode remplacera la première instance. Pour obtenir chaque instance, utilisezArray.map()
:Bien sûr, cela crée un nouveau tableau. Si vous voulez le faire sur place, utilisez
Array.forEach()
:la source
Array.indexOf()
a été introduit en même temps quemap()
etforEach()
. Si vous prenez en charge IE8 ou une version antérieure, et que vous n'utilisez pas de cale pour ajouter du support, utilisez plutôt la réponse de mellamokb .Ma solution suggérée serait:
L'opération d'épissage supprimera 1 élément, en commençant à la position 1 dans le tableau (c'est-à-dire
3452
), et le remplacera par le nouvel élément1010
.la source
1
élément sera supprimé alors qu'en fait le premier paramètre signifie que l'opération a lieu à l'index1
. developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…Utilisez indexOf pour rechercher un élément.
la source
Facile à réaliser avec une
for
boucle.la source
Vous pouvez modifier n'importe quel nombre de la liste à l'aide d'index
par exemple :
la source
Si vous utilisez un objet complexe (ou même simple) et que vous pouvez utiliser es6,
Array.prototype.findIndex
c'est un bon. Pour le tableau OP, ils pourraient faire,Pour les objets plus complexes, cela brille vraiment. Par exemple,
la source
Le remplacement peut se faire sur une seule ligne:
Ou créez une fonction à réutiliser:
la source
Manière ES6 :
Nous voulons remplacer
3452
par1010
, solution:Certes, la question se pose depuis de nombreuses années et pour l'instant je préfère simplement utiliser une solution immuable , c'est vraiment génial pour
ReactJS
.Pour une utilisation fréquente, j'offre la fonction ci-dessous:
la source
Première méthode
Meilleur moyen en une seule ligne pour remplacer ou mettre à jour un élément du tableau
Par exemple:
Deuxième méthode
Une autre manière simple de faire la même opération est:
la source
Le moyen le plus simple consiste à utiliser certaines bibliothèques comme underscorejs et la méthode map.
la source
replace
maintenant un tableau-conscient ..._.replace([1, 2, 3], 2, 3);
La manière immuable de remplacer l'élément dans la liste en utilisant les opérateurs et la
.slice
méthode de propagation ES6 .Vérifiez que cela fonctionne
la source
Si vous connaissez la valeur, utilisez-la,
Si vous voulez savoir si cette valeur est présente ou non, utilisez,
Si vous connaissez le lieu (position), utilisez directement,
Si vous voulez remplacer quelques éléments et que vous savez que la position de départ ne signifie que,
pour en savoir plus sur .splice
la source
à partir d'ici, vous pouvez supprimer une valeur particulière du tableau et en fonction du même index, vous pouvez insérer une valeur dans le tableau.
la source
Eh bien, si quelqu'un s'intéresse à la façon de remplacer un objet de son index dans un tableau, voici une solution.
Trouvez l'index de l'objet par son id:
Remplacez l'objet à l'aide de la méthode Object.assign ():
la source
La réponse de @ gilly3 est excellente.
Comment étendre cela pour un tableau d'objets
Je préfère la manière suivante pour mettre à jour le nouvel enregistrement mis à jour dans mon tableau d'enregistrements lorsque j'obtiens des données du serveur. Il garde l'ordre intact et assez simple sur une doublure.
users = users.map(u => u.id !== editedUser.id ? u : editedUser);
la source
Tout d'abord, réécrivez votre tableau comme ceci:
Ensuite, accédez à l'élément du tableau via son numéro d'index. La formule pour déterminer le numéro d'index est:
n-1
Pour remplacer le premier élément
(n=1)
du tableau, écrivez:Dans votre exemple, le nombre
3452
est en deuxième position(n=2)
. Donc, la formule pour déterminer le numéro d'index est2-1 = 1
. Écrivez donc le code suivant pour le remplacer3452
par1010
:la source
Voici la réponse de base transformée en fonction réutilisable:
la source
J'ai résolu ce problème en utilisant des boucles for et en itérant à travers le tableau d'origine et en ajoutant les positions des arreas correspondants à un autre tableau, puis en parcourant ce tableau et en le modifiant dans le tableau d'origine, puis je le renvoie, j'ai utilisé la fonction de flèche et une fonction régulière fonctionnerait aussi.
la source
la source
La façon la plus simple est la suivante.
la source
replaceWhat = 523, replaceWith = 999999
ne donne pas de résultats correctsVoici une doublure. Il suppose que l'élément sera dans le tableau.
la source
Si vous voulez un simple revêtement de sintax au sucre, vous pouvez simplement:
Comme:
Si vous n'avez pas d'identifiant, vous pouvez stringifier l'élément comme:
la source