Quiero crear una matriz de cadenas agregando, pero importa si el origen es una matriz o una cadena. Por lo tanto, necesito convertir una cadena como "abc" en una matriz de cadenas.
si uso
Array.from()me hace algo como esto ["a","b","c"] pero quiero tener ["abc"];
¿Hay alguna manera fácil que tome una entrada como "abc" y al mismo tiempo ["a","abc"] I para poder agregar más tarde una cadena más con push, por ejemplo?
algunas limitaciones: no puedo crear
let a = [];porque viene del exterior. Y claro, puedo agregar algún código para verificar cuál es, pero busco un mecanismo simple.
Creo que necesito algo como arr1.flat();
No estoy muy seguro si entiendo su pregunta correctamente, ¿desea agregar la fuente a una matriz existente si es una cadena o concatenar la fuente si ya es una matriz?
¿Has probado typeof ? Ver los documentos de tipo de MDN
if (typeof origin === 'string') { mylist.push(origin) } else { mylist = mylist.concat(origin) }EDITAR: Según el comentario de NiceBooks:
let str = new String('Hello, world') typeof str // 'object'( fuente )
Por lo tanto, como sugirieron, lo siguiente podría ser mejor:
if (Array.isArray(origin)) { mylist = mylist.concat(origin) // there are more cleaner ways, for starters this should be fine } else { mylist.push(origin) }Tal vez esto hace lo que quieres:
function strArr(base,s){ return !Array.isArray(base)?[base,s]:[...base,s]; } let a="abc", arr=["one","two"]; console.log(strArr(a,"b")); console.log(strArr(arr,"three")); Cambié mi respuesta ligeramente. Ahora la función ya no cambiará la base de la matriz de entrada.