Javascript - Как разбить строку на вложенный массив? - PullRequest
0 голосов
/ 15 января 2020

Я знаю, что могу использовать функцию split для преобразования строки в массив, но как можно дважды разделить строку, чтобы получить вложенный массив?

Я ожидал, что этого будет достаточно, но это не даст желаемый результат.

var myString = "A,B,C,D|1,2,3,4|w,x,y,z|"
var item = myString.split("|");
var array = [item.split(",")];

Было бы более оптимальным использовать a для каждого l oop?

ОЖИДАЕМЫЙ ВЫХОД

var array = [
  ["A","B","C","D"],
  ["1","2","3","4"],
  ["w","x","y","z"],
];

Ответы [ 2 ]

4 голосов
/ 15 января 2020

После разделения на | используйте .map, чтобы учесть вложение, прежде чем снова вызывать .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);
1 голос
/ 15 января 2020

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);
...