2016-08-02 7 views
1

У меня есть массив, который будет заполняться информацией каждый раз, когда пользователь нажимает кнопку. Информация, помещенная в этот массив, находится внутри самого массива. так что-то вдоль линий этого:Проверка дублированных вложенных массивов

var parentArray = []; 
var childArray = ["Info1", "Info2", 500]; 

$("#button").on("click", function(){ 
    parentArray.push(childArray); 
}) 

Каждый раз, когда пользователь нажимает на кнопку, то childArray будет иметь различную информацию, основанную на другом входе пользователя. Например, пользователь нажимает на одну точку на карте, childArray принимает определенную информацию. Пользователь нажимает на другую точку на карте, а childArray принимает определенную информацию. Каждый раз, когда childArray будет отличаться или совпадать. пользователь затем нажимает кнопку, и информация в childArray помещается в parentArray.

Моя проблема в том, что я хочу избавиться от дубликата childArrays в пределах parentArray. Так, скажем, один childArray выглядит следующим образом:

["Info1", "Info2", 25]

Другой ребенок массив выглядит следующим образом: ["Info1", "Info2", 50]

И еще выглядит следующим образом: ["Info1", "Info2", 25]

Я хочу, чтобы найти, если два childArrays те же самые, первый и третий массивы, и если они есть, удалите все, кроме одного аналогичного массива, поэтому в конце, вместо того, чтобы выглядеть так:

[["Info1", "Info2", 25], ["Info1", "Info2", 50], ["Info1", "Info2", 25]]

мой parentArray будет выглядеть следующим образом:

[["Info1", "Info2", 25], ["Info1", "Info2", 50]]

Можно ли добиться этого? Если да, то как мне это сделать?

Я надеюсь, что это имело смысл.

+0

Да, это возможно, что вы пробовали? – Jamiec

+0

вы можете найти ответ здесь, в случае http://stackoverflow.com/questions/6680430/get-unique-results-from-json-array-using-jquery –

+0

http://stackoverflow.com/questions/6518651/ elminating-duplicates-in-a-json-object –

ответ

0

Вы можете использовать filter() и thisArg параметр

var ar = [["Info1", "Info2", 25], ["Info1", "Info2", 50], ["Info1", "Info2", 25]]; 
 
var result = ar.filter(function(e) { 
 
    if(!this[e.join('|')]) { 
 
    this[e.join('|')] = true; 
 
    return e; 
 
    } 
 
}, {}); 
 

 
console.log(result);

+0

Можете ли вы разместить свой код в скрипте –

+0

Извините, я видел, что я сделал не так в отношении моего первого комментария. Можете ли вы объяснить, почему у вас есть отдельный набор фигурных скобок и почему он действительно заставляет его работать? –

+1

Это объект как параметр 'thisArg' или' this' в функции. –

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