2013-05-21 4 views
1

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

[[10, 20, 30, S1] 
[10, 20, 30, S1] 
[10, 20, 30, S1] 
[50, 70, 80, G1] 
[50, 70, 80, G1] 
[50, 70, 80, G1]] 

Я хочу, чтобы отфильтровать все «не первый» вхождение 4 значения каждого суб-массива, как это:

[[10, 20, 30, S1] 
[10, 20, 30] 
[10, 20, 30] 
[50, 70, 80, G1] 
[50, 70, 80] 
[50, 70, 80]] 

Как это возможно? Заранее спасибо

+0

я предполагаю S1 и G1 являются строки? –

+0

Не могли бы вы предоставить некоторую информацию о том, что вы пробовали и/или имеете до сих пор? – rtcherry

+1

Должны быть запятые после каждого массива в массиве, кроме последнего: '[[10, 20, 30, S1], [10, 20, 30, S1], [10, 20, 30, S1], [50, 70, 80, G1], [50, 70, 80, G1], [50, 70, 80, G1]] ' – MasNotsram

ответ

2

Вы можете использовать объект для отслеживания найденных значений, и удалить последний элемент из подрешеток, когда он был найден раньше:

var items = {}; 
for (var i = 0; i < arr.length; i++) { 
    var id = arr[i][arr[i].length - 1]; 
    if (items.hasOwnProperty(id)) { 
    arr[i].pop(); 
    } else { 
    items[id] = 1; 
    } 
} 
+0

У меня было такое же решение (хотя с' if (items [ id]) 'и' splice' вместо 'pop'), но ваш более прочный и элегантный. +1 –

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