Разбор уникальных значений для каждого ключа в массиве объектов - PullRequest
0 голосов
/ 22 февраля 2019

Я пытаюсь найти самый быстрый способ разобрать огромный массив объектов и получить уникальные значения для каждого из них.Массив, который я пытаюсь проанализировать, содержит 90000 огромных объектов с большим количеством ключей.Какой будет лучший метод?Вот пример:

const collection = [
  {
    value1: 1,
    value2: 3,
    ...
  },
  {
    value1: 4,
    value2: 3,
    ...
  }
]

до:

const result = {
  value1: [1, 4],
  value2: [3],
  ...
}

Спасибо.

Ответы [ 2 ]

0 голосов
/ 22 февраля 2019
const collection = [
  {
    value1: 1,
    value2: 3,
  },
  {
    value1: 4,
    value2: 3,
    value3: "wowo"
  }
]
const ans = {}
collection.forEach(itm => {
    for(var propertyName in itm) {
        console.log("item",propertyName)
        ans[propertyName] = ans[propertyName] || []
        ans[propertyName].push(itm[propertyName])
    }
})

console.log(ans)
0 голосов
/ 22 февраля 2019

Попробуйте с помощью Array#reduce

  1. зациклить внутренний массив и передать с помощью a object
  2. , если он не существует, создать или передать значение в массив
  3. Для unique values проверьте массив с помощью indexOf

const collection = [{value1: 1,value2: 3,},{ value1: 4,value2: 3,}];

$res = collection.reduce(function(a,b){
  Object.keys(b).forEach(function(i,k){
    a[i] = a[i]||[];
    if(a[i].indexOf(b[i]) == -1){
    a[i].push(b[i])
    }
  })
  return a
},{})



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