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

Я пытался решить это слишком долго. Может кто-нибудь объяснить, почему ни одна из моих попыток ниже не даст ожидаемого значения?

цель: transResult = [[xy, zy], [xz, zz]]

let allData='xy|zy\r\nxz|zz'
console.log('first split: '+allData.split(/\r?\n/)[0])     
//first split: xy|zy
let transResult=allData.split(/\r?\n/).map(x=>x.split(/|/))
console.log(transResult)
//[ [ 'x', 'y', '|', 'z', 'y' ], [ 'x', 'z', '|', 'z', 'z' ] ]

Если Я разделяю один элемент, например,

console.log('xy|zy'.split('|'))

Я получаю ожидаемое значение [ 'xy', 'zy' ] Что происходит с первой картой (), которая испортила результат в первой части кода?

1 Ответ

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

| является специальным символом, поэтому вы должны экранировать его, используя \:

const allData='xy|zy\r\nxz|zz';  
const transResult=allData.split(/\r?\n/).map(x=>x.split(/\|/));

console.log(transResult);
...