2013-12-16 5 views
1

У меня есть массив массивов, выглядит следующим образом:Возвращение уникальных массивов из списка массивов

var lst = [ 
    ['abc', 'ab'], 
    ['a'], 
    ['abc', 'ab'],  // dup 
    ['abc', 'ab', 'bc'], 
    ['c', 'a', 'c'], 
    ['abc', 'ab', 'bc'], // dup 
    ['a'], 
    ['c', 'a', 'c']  // dup 
    ] 

Как удалить повторяющиеся элементы из этого массива?

Выход Я ищу это:

var lst = [['abc', 'ab'], ['a'], ['abc', 'ab', 'bc'], ['c', 'a', 'c']] 
+1

Почему, например, '[ 'с', 'а', 'с'] 'удалена один раз, когда '['abc', 'ab']' нет? –

+0

Вы хотите удалить дублированные массивы? – Neto

+0

@RokoCBuljan Вы слегка изменили вопрос при редактировании, я подозреваю, что вы исправили непреднамеренную ошибку, но черепаха может захотеть прокомментировать, было ли изменение правильным. –

ответ

2

Это так просто:

var lst = [['abc', 'ab'], ['a'], ['abc', 'ab'], ['abc', 'ab', 'bc'], ['c', 'a', 'c'], ['abc', 'ab', 'bc'], ['a'], ['c', 'a', 'c']] 
var newLst = []; 
var newLstJ = []; 
for(var i = 0; i < lst.length; i++){ 
    var json = JSON.stringify(lst[i]); 
    if(newLstJ.indexOf(json) === -1) { 
     newLst.push(lst[i]); 
     newLstJ.push(json); 
    } 
} 
lst = newLst; 
+0

Hm ... будет ли это работать с массивами, содержащими массивы? –

+0

@JoachimIsaksson Да, вы писали. Я обновил ответ. – idmean

+0

Спасибо за помощь. Вы уверены, что это работает? Кажется, он не работает для меня. – turtle

Смежные вопросы