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