J'ai 2 tableaux que je veux "réduire" en 1 objet.
donc par exemple:
J'ai ..
var newOrderObject = originalData.reduce(function(newData) {
var orderObject = {};
originalData = newData;
return orderObject;
}, {});
je veux combiner ces deux tableaux dans un objet qui ressemble à ceci:
var newOrderObject = {1:3, 2:1, 3:2};
im en utilisant une fonction de réduction mais il semble les mapper différemment
var originalData = [1,2,3]; var newData = [3,1,2];
toute suggestion serait appréciée
3 Réponses :
Réduisez le premier tableau (les clés) et prenez les valeurs du deuxième tableau en utilisant index:
var originalData = [1,2,3];
var newData = [3,1,2];
var newOrderObject = originalData.reduce(function(obj, key, index) {
obj[key] = newData[index];
return obj;
}, {});
console.log(newOrderObject);
Vous pouvez mapper des objets uniques et les affecter à un seul objet. Si des tableaux vides sont possibles, utilisez un objet vide comme valeur cible.
const transpose = (r, a) => a.map((v, i) => (r[i] || []).concat(v));
var keys = [1, 2, 3],
values = [3, 1, 2],
object = Object.assign(
{},
...[keys, values]
.reduce(transpose, [])
.map(([k, v]) => ({ [k]: v }))
);
console.log(object);
Une approche plus propre consisterait à transposer les tableaux en un tableau de paires clé / valeur, puis à mapper l'objet.
var keys = [1, 2, 3],
values = [3, 1, 2],
object = Object.assign({}, ...keys.map((k, i) => ({ [k]: values[i] })));
console.log(object);
@Shidersz, avec un objet vide comme objet cible, il fonctionne avec des tableaux vides.
Vous n'utilisez simplement pas .reduce .
Utilisez les 3 et vous obtenez le résultat souhaité.
var originalData = [1,2,3];
var newData = [3,1,2];
var newOrderObject = originalData.reduce(function(acc, item, i) {
return Object.assign(acc, { [item]: newData[i] })
}, {});
console.log(newOrderObject)
Avez-vous essayé cela? stackoverflow.com/questions/10623635 /…
Je voudrais fusionner dans un objet ... je ne pense pas que je peux utiliser push (), non?
Copie possible de Création d'un objet JavaScript à partir de deux tableaux