Aquí hay un fragmento de código que explica lo que estoy tratando de hacer.
const names = ["foo", "bar", "baz"]; let actual = []; // Implementation here.. const expected = ['f', 'o', 'o', ' ', 'b', 'a', 'r', ' ', 'b', 'a', 'z']; // Tests if (actual.length !== expected.length) { console.error("Fail - Arrays not in equal length."); } for (let i = 0; i < expected.length; i++) { if (actual[i] !== expected[i]) { console.error('Fail - Letters are not equal in indices.'); break; } }Tengo una implementación para ello, pero ¿existe una forma más simple/elegante de hacerlo en lugar de usar bucles anidados y una condición if para verificar si estamos iterando sobre el último elemento?
Aquí lo que me funciona lo que no me gusta y quiero mejorar:
for (const name of names) { for (const letter of [...name]) { actual.push(letter); } if (names[names.length - 1] !== name) { actual.push(' '); } }Parece que sería fácil simplemente unir la matriz de cadenas por un espacio, luego convertir eso en una matriz:
const names = ["foo", "bar", "baz"]; const result = [...names.join(' ')]; console.log(result); (es posible que tenga la tentación de .split('') para un encadenamiento más elegante, pero eso tiene problemas con ciertos caracteres )