найти и объединить повторяющиеся совпадения с массивом в JavaScript

1

Ниже представлен массив продуктов, который находил и обрабатывал контактные данные и создавал возможный массив случаев слияния. В следующем arrProduct я хотел бы фильтровать повторяющийся массив и объединиться с существующим массивом и, наконец, создать уникальный продукт массива, называемый arrFinalProduct.

Массивный продукт

arrProduct = 
    [ 
      [ 0 ],
      [ 1, 2 ],
      [ 2 ],
      [ 3 ],
      [ 4, 5, 6, 10 ],
      [ 5, 6, 7, 11 ],
      [ 6 ],
      [ 7, 11 ],
      [ 8 ],
      [ 9 ],
      [ 10 ],
      [ 11 ],
      [ 12 ],
      [ 13, 14 ],
      [ 14 ]
    ]

Конечный продукт

arrFinalProduct = 
    [ 
      [ 0 ],
      [ 1, 2 ],
      [ 3 ],
      [ 4, 5, 6, 7, 10, 11 ],
      [ 8 ],
      [ 9 ],
      [ 12 ],
      [ 13, 14 ]
    ]

arrProduct - это массив продуктов, а arrFinalProduct - это конечный массив продуктов. Основная логика заключается в том, что нам требуется слияние массива, если любые совпадения встречаются из массива.

Скажем, значение 0 не найдено ни в одном индексе в arrProduct, чтобы оно не сливалось и не впадало в arrFinalProduct, значение arrProduct 2 находилось на 1-м и 2-м индексах, чтобы оно могло слиться с 1-м индексом и стать [1,2] и удалить третий индекс из [2]. arrProduct index 5 имеет два общих значения 5 и 6, а также в индексе 6, чтобы он мог слиться в 1 и стать "4,5,6,7" и так далее...

Этот процесс будет обрабатывать данные рекурсивно, пока не найду уникальное значение из массива. Поэтому он, вероятно, объединяет массив по горизонтали.

Надежды читателя могут получить достаточно идеи.

  • 0
    Вы пробовали что-нибудь?
  • 0
    Да, на самом деле я выполнил обработку данных и нашел повторы данных. и это массив этих происшествий.
Показать ещё 11 комментариев
Теги:
arrays

1 ответ

1
Лучший ответ

В основном вы можете искать искомые элементы в результирующем наборе и присоединяться к массивам с одинаковыми элементами.

Порядок элементов такой же, как и внешний вид.

var array = [[0], [1, 2], [2], [3], [4, 5, 6, 10], [5, 6, 7, 11], [6], [7, 11], [8], [9], [10], [11], [12], [13, 14], [14]],
    result = array.reduce(function (r, a) {
        r.some(function (b, i, bb) {
            if (a.some(c => b.includes(c))) {
                bb[i] = [...new Set(b.concat(a))];
                return true;
            }
        }) || r.push(a);
        return r;
    }, []);

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
  • 0
    спасибо, это очарование

Ещё вопросы

Сообщество Overcoder
Наверх
Меню