Chaque élément de ce tableau est un certain nombre.
var items = Array(523,3452,334,31, ...5346);
Comment remplacer un nombre dans un tableau par un nouveau?
Par exemple, nous voulons remplacer 3452 par 1010, comment procéderions-nous?
var index = items.indexOf(3452);
if (index !== -1) {
items[index] = 1010;
}
De plus, il est recommandé de ne pas utiliser la méthode constructeur pour initialiser vos tableaux. À la place, utilisez la syntaxe littérale:
var items = [523, 3452, 334, 31, 5346];
Vous pouvez également utiliser l'opérateur ~
si vous êtes passionné de JavaScript et que vous souhaitez raccourcir la comparaison -1
:
var index = items.indexOf(3452);
if (~index) {
items[index] = 1010;
}
Parfois, j’aime même écrire une fonction contains
pour faire abstraction de 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:
var contains = function (haystack, needle) {
return !!~haystack.indexOf(needle);
};
// can be used like so now:
if (contains(items, 3452)) {
// do something else...
}
À partir de 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:
if (haystack.includes(needle)) {
// do your thing
}
La méthode Array.indexOf()
remplacera la première instance. Pour obtenir chaque instance, utilisez Array.map()
:
a = a.map(function(item) { return item == 3452 ? 1010 : item; });
Bien sûr, cela crée un nouveau tableau. Si vous voulez le faire en place, utilisez Array.forEach()
:
a.forEach(function(item, i) { if (item == 3452) a[i] = 1010; });
Utilisez indexOf pour rechercher un élément.
var i = items.indexOf(3452);
items[i] = 1010;
Facilement accompli avec une boucle for
.
for (var i = 0; i < items.length; i++)
if (items[i] == 3452)
items[i] = 1010;
Vous pouvez éditer n'importe quel numéro de la liste en utilisant des index
par exemple :
items[0] = 5;
items[5] = 100;
Ma solution suggérée est:
articles.splice (1,1,1010)
Explication: L’opération de jonction supprimera 1 élément en commençant à la position 1 du tableau (c’est-à-dire 3452) et le remplacera par le nouvel élément (1010).
Si vous utilisez un objet complexe (ou même un objet simple) et que vous pouvez utiliser es6, Array.prototype.findIndex
en est un bon. Pour le tableau de l'OP, ils pourraient faire,
const index = items.findIndex(x => x === 3452)
items[index] = 1010
Pour des objets plus complexes, cela brille vraiment. Par exemple,
const index =
items.findIndex(
x => x.jerseyNumber === 9 && x.school === 'Ohio State'
)
items[index].lastName = 'Utah'
items[index].firstName = 'Johnny'
var items = Array(523,3452,334,31,5346);
Si vous connaissez la valeur alors utilisez,
items[items.indexOf(334)] = 1010;
Si vous voulez savoir que la valeur est présente ou non, utilisez,
var point = items.indexOf(334);
if (point !== -1) {
items[point] = 1010;
}
Si vous connaissez le lieu (position) puis utilisez directement,
items[--position] = 1010;
Si vous voulez remplacer quelques éléments et que vous ne connaissez que la position de départ,
items.splice(2, 1, 1010, 1220);
pour en savoir plus sur .splice
Le remplacement peut être effectué sur une seule ligne:
var items = Array(523, 3452, 334, 31, 5346);
items[items.map((e, i) => [i, e]).filter(e => e[1] == 3452)[0][0]] = 1010
console.log(items);
Ou créez une fonction à réutiliser:
Array.prototype.replace = function(t, v) {
if (this.indexOf(t)!= -1)
this[this.map((e, i) => [i, e]).filter(e => e[1] == t)[0][0]] = v;
};
//Check
var items = Array(523, 3452, 334, 31, 5346);
items.replace(3452, 1010);
console.log(items);
Le moyen le plus simple consiste à utiliser certaines bibliothèques telles que underscorejs et la méthode map.
var items = Array(523,3452,334,31,...5346);
_.map(items, function(num) {
return (num == 3452) ? 1010 : num;
});
=> [523, 1010, 334, 31, ...5346]
Voici la réponse de base transformée en une fonction réutilisable:
function arrayFindReplace(array, findValue, replaceValue){
while(array.indexOf(findValue) !== -1){
let index = array.indexOf(findValue);
array[index] = replaceValue;
}
}
Le moyen immuable de remplacer l'élément dans la liste à l'aide des opérateurs d'étalement ES6 et de la méthode .slice
.
const arr = ['fir', 'next', 'third'], item = 'next'
const nextArr = [
...arr.slice(0, arr.indexOf(item)),
'second',
...arr.slice(arr.indexOf(item) + 1)
]
Vérifiez que fonctionne
console.log(arr) // [ 'fir', 'next', 'third' ]
console.log(nextArr) // ['fir', 'second', 'third']
var index = Array.indexOf(Array value);
if (index > -1) {
Array.splice(index, 1);
}
à partir de là, vous pouvez supprimer une valeur particulière d'un tableau et, à partir du même index, insérer une valeur dans un tableau.
Array.splice(index, 0, Array value);
J'ai résolu ce problème en utilisant des boucles for, en effectuant une itération dans le tableau d'origine et en ajoutant les positions des arreas correspondants à un autre tableau, puis en passant à travers ce tableau et en le modifiant dans le tableau d'origine, puis en le retournant. J'ai utilisé une fonction de flèche, mais une fonction régulière fonctionnerait aussi.
var replace = (arr, replaceThis, WithThis) => {
if (!Array.isArray(arr)) throw new RangeError("Error");
var itemSpots = [];
for (var i = 0; i < arr.length; i++) {
if (arr[i] == replaceThis) itemSpots.Push(i);
}
for (var i = 0; i < itemSpots.length; i++) {
arr[itemSpots[i]] = WithThis;
}
return arr;
};
Commencez par réécrire votre tableau comme ceci:
var items = [523,3452,334,31,...5346];
Ensuite, accédez à l'élément dans le tableau par son numéro d'index. La formule pour déterminer le numéro d'index est la suivante: n-1
Pour remplacer le premier élément (n=1)
dans le tableau, écrivez:
items[0] = Enter Your New Number;
Dans votre exemple, le nombre 3452
est à la deuxième position (n=2)
. Donc, la formule pour déterminer le numéro d'index est 2-1 = 1
. Donc écrivez le code suivant pour remplacer 3452
par 1010
:
items[1] = 1010;
presentPrompt(id,productqty) {
let alert = this.forgotCtrl.create({
title: 'Test',
inputs: [
{
name: 'pickqty',
placeholder: 'pick quantity'
},
{
name: 'state',
value: 'verified',
disabled:true,
placeholder: 'state',
}
],
buttons: [
{
text: 'Ok',
role: 'cancel',
handler: data => {
console.log('dataaaaname',data.pickqty);
console.log('dataaaapwd',data.state);
for (var i = 0; i < this.cottonLists.length; i++){
if (this.cottonLists[i].id == id){
this.cottonLists[i].real_stock = data.pickqty;
}
}
for (var i = 0; i < this.cottonLists.length; i++){
if (this.cottonLists[i].id == id){
this.cottonLists[i].state = 'verified';
}
}
//Log object to console again.
console.log("After update: ", this.cottonLists)
console.log('Ok clicked');
}
},
]
});
alert.present();
}
As per your requirement you can change fields and array names.
thats all. Enjoy your coding.