Как я могу извлечь все данные из JSON, содержащего несколько массивов? - PullRequest
0 голосов
/ 13 июля 2020

Как я могу извлечь все числа из этого JSON в наборе, в JavaScript?

[
  {
    "name": "list0",
    "list": [0,1,2,3,4]
  },
  {
    "name": "list1",
    "list": [3,4,5,6,7,8,9]
  }
]

Я бы хотел получить набор только с:

0,1,2,3,4,5,6,7,8,9

Ответы [ 4 ]

3 голосов
/ 13 июля 2020

Вы можете попробовать использовать Set()

Объект Set позволяет сохранять уникальные значения любого типа, будь то примитивные значения или ссылки на объекты.

и flatMap()

Метод flatMap() сначала сопоставляет каждый элемент с помощью функции сопоставления, а затем сводит результат в новый массив. Он идентичен map (), за которым следует flat () глубины 1, но flatMap() часто бывает весьма полезным, поскольку объединение обоих в один метод немного более эффективно.

var arr = [
  {
    "name": "list0",
    "list": [0,1,2,3,4]
  },
  {
    "name": "list1",
    "list": [3,4,5,6,7,8,9]
  }
]

var res = [... new Set(arr.flatMap(el => el.list))];
console.log(res);
3 голосов
/ 13 июля 2020

Вы можете использовать array.reduce и оператор распространения:

let input = [
  {
    "name": "list0",
    "list": [0,1,2,3,4]
  },
  {
    "name": "list1",
    "list": [3,4,5,6,7,8,9]
  }
];

let numbers = input.reduce((acc,cur) => [...acc, ...cur.list], []);
console.log(numbers);

console.log(...new Set(numbers))
2 голосов
/ 13 июля 2020

вы можете использовать map и flat для перебора массива и преобразования его в массив с одним уровнем или flatmap для одновременного выполнения обоих, а затем используйте Установите для дедупликации

array=[ { "name": "list0", "list": [0,1,2,3,4] }, { "name": "list1", "list": [3,4,5,6,7,8,9] } ]
set=[...new Set(array.map(x=>x.list).flat())]
console.log(set)

используя flatmap()

array=[ { "name": "list0", "list": [0,1,2,3,4] }, { "name": "list1", "list": [3,4,5,6,7,8,9] } ]
    set=[...new Set(array.flatMap(x=>x.list))]
    console.log(set)
2 голосов
/ 13 июля 2020

Для решения проблемы можно использовать оператор распространения ... array .

let arr = [
  {
    "name": "list0",
    "list": [0,1,2,3,4]
  },
  {
    "name": "list1",
    "list": [3,4,5,6,7,8,9]
  }
] 

let a = [];
arr.forEach(obj=>{
    a.push(...obj.list)
})

const set = new Set([...a]);
console.log(...set)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...