У меня есть массив объектовGroup массив объектов в зависимости от значений
[
{ values: [2, 7, 1] },
{ values: [1, 2, 7] },
{ values: [7, 1, 2] },
{ values: [3, 4, 5] },
{ values: [2, 1, 8] },
{ values: [2, 1, 8] },
]
Я хочу, чтобы сгруппировать эти объекты вместе с другим объектом с теми же значениями. Таким образом, этот массив объектов должен быть сгруппирован в 3 группы, поскольку первые 3 объекта имеют одинаковые значения, следующий объект один, а последние 2 объекта имеют одинаковые значения.
Как видно из примера, значения могут иметь разные порядки, но их все равно следует считать одинаковыми.
Я подумываю о том, чтобы каждый элемент пересекал оставшиеся элементы и видел, похожи ли они, но это приведет к O(n^2)
.
Я думаю, я должен удалить элементы из массива, который уже сгруппирован.
Так как я мог, эффективно, группа как
[[first, second, third],[fourth],[fifth,sixth]]
Да, это здорово. На самом деле меня не волнуют ключи. Можно ли предоставить им другие ключи (например, 1, 2, 3) и удалить их с пустыми массивами в свойстве 'values'? Я знаю, что могу использовать '.filter (function (obj) {return obj.values.length> 0;}) ...', но достаточно ли достаточно многократно вызывать 'obj.values'? – Jamgreen
@Jamgreen checkout update – ruX
@Jamgreen о '' '.filter()' '' я думаю, это не вопрос, связанный, но я не понимаю, почему он не эффективен. Конечно, это зависит от характера и объема данных – ruX