Найти и получить идентификатор с двумя массивами Javascript - PullRequest
1 голос
/ 05 марта 2020

Итак, мне нужно csv, один из них содержит «Tshirt, ID», а другой содержит только футболку.

После использования papaparse я получил два таких массива:

[]
data: Array(6)
0: {tshirt: "a", ID: 121}
1: {tshirt: "b", ID: 132}
2: {tshirt: "c", ID: 147}
3: {tshirt: "d", ID: 97}
4: {tshirt: "e", ID: 76}

[]
data: Array(2)
0: {tshirt: "d", ID: null}
1: {tshirt: "a", ID: null}

Что я хочу сделать, это сгенерировать новый CSV со вторым массивом + идентификатор из первого массива. Примерно так:

[]
data: Array(2)
0: {tshirt: "d", ID: 97}
1: {tshirt: "a", ID: 121}

Я все перепробовал и не могу заставить его работать. вот мой код:

    var data1=  []
    Papa.parse('a.csv', {
      header: true,
      delimiter: ';',
      download: true,
      dynamicTyping: true,
      skipEmptyLines: true,
      complete: function(results) {
        data1.data = results.data
      }
    });

    var data2 = []
    Papa.parse('b.csv', {
      header: true,
      delimiter: ';',
      download: true,
      dynamicTyping: true,
      skipEmptyLines: true,
      complete: function(results) {
        data2.data = results.data
      }
    });

console.log(data1)
console.log(data2)

1 Ответ

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

Вот решение, которое создает карту из первого массива:

const data1 = 
[{tshirt: "a", ID: 121},
{tshirt: "b", ID: 132},
{tshirt: "c", ID: 147},
{tshirt: "d", ID: 97},
{tshirt: "e", ID: 76}]

const data2 = 
[{tshirt: "d", ID: null},
{tshirt: "a", ID: null}]

const data1map = data1.reduce ((acc, d) => ({...acc, [d.tshirt]: d}), {})

const result = data2.map(d => ({...d, ID: data1map[d.tshirt].ID}))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...