Использование обрезки более одного раза в массиве JS - PullRequest
4 голосов
/ 06 января 2020

У меня есть фрагмент кода, в котором я пытаюсь проанализировать более длинную строку со специальными символами в массив без пробелов или специальных символов.
input: name: это кое-что, name2: это больше вещей
желаемый вывод: [name, это кое-что, name2, это больше вещей]
текущий вывод: z.trim isn ' t функция

function parseOrder(custOrder) {
  const custOrderArr = custOrder.split(','); 
  const trimedArr = custOrderArr.map((x) => x.trim());
  const numberArr = trimedArr.map((y) => y.split(':'));
  const processArr = numberArr.map((z) => z.trim());
  console.log(processArr);
}

Почему обрезка работает в первый раз, а не во второй?

Ответы [ 2 ]

3 голосов
/ 06 января 2020

Вы не можете обрезать массив. Но вы можете отобразить массив и обрезать значения.

Этот результат содержит Array#flatMap для предотвращения массивов с парами.

function parseOrder(custOrder) {
    return custOrder
        .split(',')
        .flatMap(y => y.split(':').map(x => x.trim()));
}


var input = 'name: this is some stuff, name2: this is more stuff ';

console.log(parseOrder(input));
1 голос
/ 06 января 2020

Попробуйте split двумя знаками, затем trim ваши элементы:

const result = str.split(/[\:,]+/).map(s => s.trim());

Пример:

let str = 'test: It is me, test2: it is me 2 ';
console.log(str.split(/[\:,]+/).map(s => s.trim()));
...