@leyarthemes

Как из массива массивов собрать массив вида [ { значение: массив индексов, по которым данное значение можно встретить в исходном массиве } ]?

Из такого массива:

var arr = [
  ["apple", 32, 2020], ["pen", 32, 2020], ["apple", 32, 2020], ["apple", 32, 2020], ["pen", 32, 2020]
];

Надо сделать такой:

var result = [
  {"apple": [0, 2, 3]},  // [0, 2, 3] - индексы всех повторений "apple" из исходного массива
  {"pen": [1, 4]}, // [1, 4] - индексы всех повторений "pen" из исходного массива
];
  • Вопрос задан
  • 292 просмотра
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
const result = Object
  .entries(arr.reduce((acc, [ n ], i) => ((acc[n] = acc[n] || []).push(i), acc), {}))
  .map(n => ({ [n[0]]: n[1] }));
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы