J'ai cette liste d'objets de tableau.
var lists = req.cookies.list; Object.keys(lists).forEach(function(item) { if(req.params.ID == lists[item].ID){ //look for match with name (lists[item]).push(timeAndOTPArray); newAddedList.push(lists[item]); console.log(item, lists[item]); } });
Maintenant, je veux pousser deux autres données dans un élément spécifique de ce tableau via forLoop comme:
var timeAndOTPArray = { "time" : new Date(), "OTP": req.params.ran }
Je récupère les données de la liste via des cookies dans l'un des itinéraires.
Voici le code que j'essaie de pousser l'élément en fonction de la condition correspondante.
var list = [{ 'ID':1, 'name' : 'Vikas Yadav', 'mobile':8095638475, 'sent':false }, { 'ID':2, 'name' : 'Rajat Shukla', 'mobile':7486903546, 'sent':false }, { 'ID':3, 'name' : 'Munna Bhaiya', 'mobile':9056284550, 'sent':false }, { 'ID':4, 'name' : 'Guddu Pandit', 'mobile':7780543209, 'sent':false }, { 'ID':5, 'name' : 'Srivani Iyer', 'mobile':8880976501, 'sent':false }];
Ce n'est peut-être pas la bonne manière. Veuillez aider! Je vous souhaite un Diwali heureux et prospère. À votre santé!
5 Réponses :
Voici les lists
sont un tableau d'objets. donc lists[item]
est un objet, donc vous ne pouvez pas pousser un objet vers un objet.
Dans votre code timeAndOTPArray
est un objet.
Dans votre objet lists
, initialisez un tableau vide appelé timeAndOTPArray
var index = lists.findIndex(function(item){ return item.ID == req.params.ID}); lists[index].timeAndOTPArray.push(timeAndOTPArray);
Il veut ajouter ces attributs ... c'est ce qu'il voulait dire en disant push
Je suppose que cela aidera
var lists = req.cookies.list; Object.keys(lists).forEach(function(item) { if(req.params.ID == lists[item].ID){ //look for match with ID Object.keys(timeAndOTPArray).forEach(key=>{ lists[item][key]=timeAndOTPArray[key]; }) } });
Vous pouvez utiliser findIndex
et append pour mettre à jour l'objet dans la liste comme ceci:
//List only with ID, easier to read the code var list = [{'ID':1,},{'ID':2,}] //your object var timeAndOTPArray = { "time" : new Date(), "OTP": "otp" } //Index where object with ID == 2 is var index = list.findIndex(obj => obj.ID == 2); //Append the 'timeAndOTPArray' properties into the object itself list[index] = {"time": timeAndOTPArray.time, "OTP":timeAndOTPArray.OTP, ...list[index]} console.log(list)
Bonsoir) Je peux vous conseiller que la meilleure option est de mettre à jour avec la carte
const listItems = [ { ID: 1, name: 'Vikas Yadav', mobile: 8095638475, sent: false, }, { ID: 2, name: 'Rajat Shukla', mobile: 7486903546, sent: false, }, { ID: 3, name: 'Munna Bhaiya', mobile: 9056284550, sent: false, }, { ID: 4, name: 'Guddu Pandit', mobile: 7780543209, sent: false, }, { ID: 5, name: 'Srivani Iyer', mobile: 8880976501, sent: false, }, ]; const paramId = 4; const result = listItems.map((item) => { if (paramId === item.ID) { return { ...item, time: new Date(), OTP: 'smth', }; } return item; }); console.log('result', result);
pour l'ajout, vous pouvez le faire,
lists[index] = {...lists[index], timeAndOTPArray};
Si vous utilisez es6,
lists[index] = Object.assign(lists[index], timeAndOTPArray);