Necesito fusionar dos matrices en una sola matriz. Tengo código, pero no funciona como se esperaba: los está fusionando uno tras otro, pero necesito interbloquear los valores.
<html> <head> <title></title> <script src="https://code.jquery.com/jquery-3.1.1.js"></script> </head> <body> <div id="result"></div> <script type="text/javascript"> var array1 = [1, 2, 3, 4]; var array2 = ["a", "b", "c", "d"]; var newArray = $.merge(array1, array2); $("#result").html(newArray); //the result its 1234absd //ineed result like 1a,2b,3c,4d </script> </body> </html>Puede usar Array#map en javascript simple.
var array1 = [1, 2, 3, 4]; var array2 = ["a", "b", "c", "d"]; var newArray = array1.map((e, i) => e + array2[i]); console.log(newArray);Si usa el mapa en matriz1, entonces el primer parámetro es el valor actual de matriz1 en el bucle y el segundo parámetro es el índice de ese elemento en la matriz. Entonces puede hacer coincidir el elemento actual en array1 con elementos de otras matrices con el mismo índice usando index.
var array1 = [1, 2, 3, 4]; var array2 = ["a", "b", "c", "d"]; var array3 = ["f", "d", "s", "a"]; var newArray = array1.map(function(value, index) { return value + array2[index] + array3[index]; }); console.log(newArray);Podría usar Array#reduce y Array#map para un recuento arbitrario de matrices con la misma longitud.
var a1 = [1, 2, 3, 4], a2 = ["a", "b", "c", "d"], a3 = [9, 8, 7, 6], a4 = ["z", "y", "x", "w"], result = [a1, a2, a3, a4].reduce((a, b) => a.map((v, i) => v + b[i])); console.log(result);ES5
var a1 = [1, 2, 3, 4], a2 = ["a", "b", "c", "d"], a3 = [9, 8, 7, 6], a4 = ["z", "y", "x", "w"], result = [a1, a2, a3, a4].reduce(function (a, b) { return a.map(function (v, i) { return v + b[i]; }); }); console.log(result);Solo una pequeña nota de variación, para fusionar por índice en una matriz múltiple, para crear una matriz asociativa de valores.
const a = [1, 2, 3, 4], b = [34, 54, 54, 43] console.log( a.map((e,i) => [e,b[i]]) ) Luego, más tarde, para buscar la coincidencia más cercana a un valor dado. En este ejemplo, buscando el mejor valor asociado para 3.7 :
const a = [1, 2, 3, 4], b = [34, 54, 54, 43], c = a.map((e,i) => [e,b[i]]), search = 3.7, temp = []; c.forEach(function(e){ temp.push(e[0]) }) const seek = temp.reduce((m, n) => (Math.abs(n-search) < Math.abs(m-search) ? n : m)) const index = c.findIndex((s) => s.indexOf(seek) !== -1) console.log(c[index][1])Esto no es exactamente cómo se comporta un objeto .
Por ejemplo, las entradas de índice idénticas no se fusionan, pero mantienen sus valores asociados en una nueva entrada (índice duplicado), podemos sacar Matemáticas del índice y crear una matriz de transformación. Podemos usar cualquier columna como índice y buscar en ambos sentidos.