javascript: разделить отправку только по первому пробелу и вставить в тот же список с помощью. Функциональный подход - PullRequest
0 голосов
/ 02 марта 2020

Я не понимаю, как использовать карту, работая с функциональным подходом. Мне не удалось перебрать список в списке.

Я пытаюсь разбить первую строку из нескольких списков строк только на две строки и вставить обратно в копию списка. Я попытался использовать .split(' ', 1), но это обрезало бы остальную часть строки. Вот мои данные:

const cars = [
    [ 'Ford 1968 mustang', 'blue'],
    [ 'Mercedez 2 door coupe', 'green'],
    [ 'Ford rusty escape', 'red'],
    [ 'Mercedez', 'black'],
    [ 'Ford expedition', 'purple'],
    [ 'mercedez helicopter with skies', 'orange']
]

    const split_string_by_space = one_string => 
        one_string.split(' ', 1);

    const iter_through_list_of_lists = outer_list => outer_list.map(inner_list => {
        inner_list.map(item => {
            split_string_by_space(item);
        })
    });

    const split_cars = iter_through_list_of_lists(cars);

    console.log(split_cars);

Вот чего я пытаюсь достичь:

[ 'Ford', '1968 mustang', 'blue'],
[ 'Mercedez', '2 door coupe', 'green'],
[ 'Ford', 'rusty escape', 'red'],
[ 'Mercedez', '', 'black'],
[ 'Ford', 'expedition', 'purple'],
[ 'Mercedez', 'helicopter with skies', 'orange'],

Ответы [ 2 ]

0 голосов
/ 02 марта 2020

Вот один способ сделать это:

const cars = [
  ['Ford 1968 mustang', 'blue'],
  ['Mercedez 2 door coupe', 'green'],
  ['ford rusty escape', 'red'],
  ['mercedez', 'black'],
  ['ford expedition', 'purple'],
  ['mercedez helicopter with skies', 'orange']
];

const result = cars.map(
  ([first, second]) => {
    const splitFirst = first.split(/ (.+)/);
    return [
      splitFirst[0] || "",
      splitFirst[1] || "",
      second
    ]
  }
);

console.log(result);
/*
[
  ["Ford", "1968 mustang", "blue"],
  ["Mercedez", "2 door coupe", "green"],
  ["ford", "rusty escape", "red"],
  ["mercedez", "", "black"],
  ["ford", "expedition", "purple"],
  ["mercedez", "helicopter with skies", "orange"]
]
*/
0 голосов
/ 02 марта 2020

Не уверен, что вы хотите с окончательной строкой (цветами), но вы можете использовать ту же технику, чтобы разделить эту часть.

См. Встроенные комментарии:

const cars = [
    [ 'Ford 1968 mustang', 'blue'],
    [ 'Mercedez 2 door coupe', 'green'],
    [ 'ford rusty escape', 'red blue'],
    [ 'mercedez wide limo', 'black green'],
    [ 'ford expedition', 'red blue purple'],
    [ 'mercedez helicopter with skies', 'black green orange']
];

let results = cars.map(function(carString){
  let result = []; // Will hold array to return from the map iteration

  // Since each member of the initial array is another array,
  // we'll have to disect that array item:
  
  // Regular expression to split only on the first white space
  let strings = carString[0].split(/(?<=^\S+)\s/);
  
  // Add to the array to be returned:
  result.push(strings[0]);
  result.push(strings[1]);
  result.push(carString[1])
  return result;
});

console.log(results);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...