Преобразование многострочной строки в объект JavaScript - PullRequest
1 голос
/ 22 марта 2019

У меня есть необработанные данные, которые выглядят так:

Last Name, First Name (Details-Details)      #ID
Last Name, First Name (Details-Details)      #ID
Last Name, First Name (Details-Details)      #ID
Last Name, First Name (Details-Details)      #ID
Last Name, First Name (Details-Details)      #ID
Last Name, First Name (Details-Details)      #ID
x1000

Я хотел бы преобразовать в циклический объект с ключами и значениями что-то вроде:

var d = {
    "FirstName LastName": "#ID";
    "FirstName LastName": "#ID";
    "FirstName LastName": "#ID";
    "FirstName LastName": "#ID";
    "FirstName LastName": "#ID";
    "FirstName LastName": "#ID";
};

Как преобразовать это в объект javascript? Я думаю, stringify может быть хорошей отправной точкой. FirstName имеют разные значения. Они только для демонстрации

Ответы [ 2 ]

1 голос
/ 22 марта 2019
  • split строка в \n
  • цикл через каждую строку, используя map
  • Используйте match с регулярным выражением /(.*), (.*) \(.*\)\s+(.*)/, чтобы получить имя, фамилию для групп захвата ( демо )
  • создать объект из массива, используя reduce

let str =
`LastName1, FirstName1 (Details-Details)      #ID1
LastName2, FirstName2 (Details-Details)      #ID2
LastName3, FirstName3 (Details-Details)      #ID3`

let output = str.split("\n")
                .map(a => a.match(/(.*), (.*) \(.*\)\s+(.*)/))
                .reduce((r, [, last, first, id]) => {
                    r[`${first} ${last}`] = id
                    return r;
                },{})

console.log(output)
0 голосов
/ 22 марта 2019

Вы можете использовать регулярное выражение для извлечения данных, используйте метод RegExp#exec для извлечения данных с использованием регулярного выражения.

var str = `Last Name1, First Name1 (Details-Details)      j1
Last Name2, First Name2 (Details-Details)      32
Last Name3, First Name3 (Details-Details)      3
Last Nam4e, First Name4 (Details-Details)      4
Last Name5, First Name5 (Details-Details)      5
Last Name6, First Name6 (Details-Details)     6`


// pattern for matching the string
let reg = /([\w ]+)\b\s?,\s?([\w ]+)\b\s*\([^)]+\)\s*([\w\d]+)/g;

// variable for storing match
let m;

// object for the result
let res = {};

// iterate over the matches
while (m = reg.exec(str)) {
// define object property based on the match
  res[`${m[2]} ${m[1]}`] = m[3];
}

console.log(res);

Объяснение Regex здесь.

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