Учитывая массив массивов, каков был бы эффективный способ идентификации дублирующего элемента?Найти повторяющийся массив в массиве
var array = [
[
11.31866455078125,
44.53836644772605
],
[ // <-- Here's the duplicate
11.31866455078125,
44.53836644772605
],
[
11.371536254882812,
44.53836644772605
],
[
11.371536254882812,
44.50140292110874
]
]
Я работал над этим с lodash
как обслуживаемый зависимость, и я, как только вернуть «уникальный» список, используя _.uniqWith
и _.isEqual
:
_.uniqWith(array,_.isEqual)
С дало бы " уникальная»версия списка:
[
[ 11.31866455078125, 44.53836644772605 ],
[ 11.371536254882812, 44.53836644772605 ],
[ 11.371536254882812, 44.50140292110874 ]
]
Но, а не только отчетности уникальных элементов, мне нужна всего лишь элемент, который дублируется, а в идеале т он индекс первого вхождения.
Это действительно покрыто библиотекой lodash
некоторой комбинацией методов, которые мне не хватает? Или мне просто придется жить с пишущими циклами для сравнения элементов.
Возможно, это просто переусердствовало, поэтому свежие глаза на проблему были бы приветствуются.
Попытка не переписать функции, если есть библиотека методы, которые подходят, так что я в основном я застрял с:
Возвращение только дубликат или, по крайней мере, разница в сравнении с «уникальным списком».
В основном идентифицируется «индекс» массива в массиве. Хотя я полагаю, что это может быть уменьшение фильтра с
_.isEqual
, как только будет идентифицирован дублирующий элемент.
Попытка также, чтобы избежать создания объекта Hash/Карта и подсчета вхождений ключей и здесь, или по крайней мере не в качестве отдельного объекта, а также то, что может быть сделано функционально «в линию».
На следующий взгляд я нашел свою опечатку и внимательно просмотрел код и понял, что вы здесь делаете. Не могу сказать, что я слишком доволен использованием '.slice()' для продолжения роста списка, но он чувствует себя чище, чем просто индексированные циклы. Обдумывая это. –
@NeilLunn '_.findIndex (collection.slice (0, index), equal)! == -1;' может быть сведен к ручному 'findIndex' для повторения только один раз. Но нынешний подход должен быть компактным. –
Вид, где я думал. Вы все равно получили мой голос. Я все еще просто очищаю голову и рассматриваю варианты. Как я уже сказал, это более чистый кодированный подход, чем другие. –