Digamos que tengo cualquier matriz como:
a = ["name", "age"] y luego una matriz de matrices como b = [["Alex", 20], ["Ari", 25], ..] Quiero hacer una matriz de objetos que obtengan sus claves de a y valores de b
[{ name: "Alex", age: 20 }, { name: "Ari", age: 25 }]Intenté lo siguiente:
for (const arr of b) { Object.assign({}, arr) }que hace un objeto pero no usa claves de matriz a.
const a = ["name", "age"] const b = [["Alex", 20], ["Ari", 25]] const output = b.map(item => { return a.reduce((aggr, curr, i) => (aggr[curr] = item[i], aggr), {}); }); console.log(output); Sin embargo, el código asume que la longitud de a siempre coincide con la longitud de cada elemento en b . Asegúrate de protegerlo adecuadamente.
En caso de que esté pensando en la declaración entre paréntesis (aggr[curr] = item[i], aggr) , este es el operador de coma de JavaScript que ejecuta todas las declaraciones delimitadas por comas y devuelve el valor de la última, en este caso aggr ( que debemos devolver para la próxima iteración de .reduce para agregar el objeto).
Si quieres algo en Python, también puedes probar esto.
my_list = [] a = ['name','age'] b = [['alex', 20], ['ari', 25], ['pete', 45], ['alf', 67]] for person in b: temp = {} for i in range(len(a)): temp[a[i]] = person[i] my_list.append(temp)