arr = [[7,3], [7,3], [3,8], [7,3], [7,3], [1,2]];
function multiDimensionalUnique(arr) {
var uniques = [];
var itemsFound = {};
for(var i = 0, l = arr.length; i < l; i++) {
var stringified = JSON.stringify(arr[i]);
if(itemsFound[stringified]) { continue; }
uniques.push(arr[i]);
itemsFound[stringified] = true;
}
return uniques;
}
multiDimensionalUnique(arr);
Explaination:
Как вы уже упоминалось выше, другой вопрос, имел дело только с единичными массивов измерения .. которые вы можете найти через IndexOf. Это облегчает задачу. Многомерные массивы не так просты, так как indexOf не работает с поиском массивов внутри.
Самый простой способ, которым я мог подумать, - сериализовать значение массива и сохранить, было ли оно уже найдено. Быстрее может сделать что-то вроде stringified = arr[i][0]+":"+arr[i][1]
, но тогда вы ограничиваете себя только двумя клавишами.
См http://stackoverflow.com/questions/13486479/javascript-array-unique – Matt
@ Matt: Я читал эту тему, прежде чем , но речь идет о простом массиве, а не о многомерном. –
Итерации по каждой записи в массиве, поиск дубликатов. это единственный способ. –