Я знаю, что могу использовать функцию split
для преобразования строки в массив, но как можно разделить строку дважды для создания вложенного массива?
Я ожидал, что этого будет достаточно, но он не даст желаемого результата.
var myString = "A,B,C,D|1,2,3,4|w,x,y,z|"
var item = myString.split("|");
var array = [item.split(",")];
Было бы более оптимальным использовать для каждого цикла?
ОЖИДАЕМЫЙ ВЫХОД
var array = [
["A","B","C","D"],
["1","2","3","4"],
["w","x","y","z"],
];
Всего 2 ответа
Как только вы разделились на |
, используйте .map
для учета вложенности перед .split
вызовом .split
. Там также пустое место после последнего |
, чтобы исключить это, сначала отфильтруйте по Boolean
:
const myString = "A,B,C,D|1,2,3,4|w,x,y,z|";
const arr = myString
.split('|')
.filter(Boolean)
.map(substr => substr.split(','));
console.log(arr);
Или вы можете использовать регулярное выражение для сопоставления чего угодно, кроме |
:
const myString = "A,B,C,D|1,2,3,4|w,x,y,z|";
const arr = myString
.match(/[^|]+/g)
.map(substr => substr.split(','));
console.log(arr);
var myString = "A,B,C,D|1,2,3,4|w,x,y,z"
var item = myString.split("|");
var outputArr = item.map(elem => elem.split(","));
console.log(outputArr);