Estoy tratando de tomar 2 matrices y fusionarlas en una nueva matriz que combinará los objetos de cada matriz. Entiendo cómo combinar 2 matrices en 1 grande, pero tengo problemas para combinar los objetos reales en un nuevo objeto dentro de esa matriz. A continuación se muestra un ejemplo de la entrada y la salida prevista que estoy tratando de obtener:
matrices dadas:
arreglo1 = ['1','2','3'];
arreglo2 = ['a','b','c'];
La nueva matriz de salida debe ser:
arreglo3 = ['1a','2b','3c'];
Esto es lo que he intentado hacer hasta ahora. En este ejemplo, intento crear el mazo de cartas necesario para jugar un juego de euchre (debe tener las cartas 9, 10, jota, reina y as y los palos de tréboles, diamantes, corazones y picas para cada carta). para un total de 24 combinaciones de cartas). Creé 2 matrices (una para el 'valor' de la tarjeta y otra para los 'palos' de la tarjeta. Para mi función, estoy pasando ambos mazos a un bucle for que idealmente agregará el objeto de la matriz de 'palos' a la final de la matriz de 'valores'. Esta nueva lista luego se pasa a la matriz de 'cubierta' vacía para devolver la nueva matriz. Sin embargo, obtengo un "Error de tipo no detectado: no se pueden leer las propiedades de undefined (leyendo 'longitud')". Esto está ocurriendo al comienzo de mi función 'createDeck' y cuando trato de llamar a la función en la declaración de registro de la consola en la parte inferior. Cualquier ayuda para comprender la lógica que necesitaría usar para combinar estas matrices sería muy apreciada ya que estoy empezando a trabajar con funciones y matrices.
const values = ['9','10', 'J', 'Q', 'K','A']; const suits = ['C', 'D', 'H', 'S']; function createDeck(values, suits) { let deck = []; for (let i = 0; i < suits.length; i++) { for (let x = 0; x < values.length; x++) { let card = {Value: values[x], Suit: suits[i]}; deck.push(card); } } return deck; } console.log(createDeck());Puede crear una nueva matriz con el método de mapa.
const values = ['1','2', '3']; const suits = ['a', 'b', 'c']; function createDeck() { let customArray = []; // check for equality of array lengths if (values.length === suits.length) { // create a new array with the map method customArray = values.map((value, index) => { return value + suits[index] }) } return customArray; } console.log(createDeck())Básicamente, puede usar el método Array.prototype.map() para lograr los resultados esperados. Se supone que la longitud de las matrices es igual entre sí. Un código de muestra se da a continuación:
array1 = ['1','2','3']; array2 = ['a','b','c']; combineArrays = (arr1,arr2) => { const arr = arr1.map((elem,index)=> { elem += arr2[index]; return elem }) return arr } console.log(combineArrays(array1, array2)) // ['1a','2b','3c']Para la versión de bucle es:
array1 = ['1','2', '3'] array2 = ['a', 'b', 'c'] combineArrays = (arr1,arr2) => { const deck = [] for(i=0; i<arr1.length; i++) { deck.push(arr1[i] + arr2[i]) } return deck } console.log(combineArrays(array1, array2)) // ['1a','2b','3c']intente declarar una nueva matriz y en el ciclo for haga
array[i] = values[i] + suits[i]tal vez necesite agregar "" en la matriz con cadenas