2015-08-14 3 views
0

Есть ли способ срезать с javascript массивом, но не в соответствии с индексом измерения, а в соответствии с содержимым его «j-го элемента (предположительно уникальности значений)?javascript нарезка массива по контенту

Пример:

myArray = [["a", "b", "c"], ["car", "hat", "plate"], ["red", "green", "black"]] 

Разрезание myArray на 0,1 даст

[["c"],["plate"],["black"]] 

и нарезку на "black" должны давать один и тот же результат.

Каково использование моего вопроса? Скажем, например, что мой массив исходит из разбора строк файла, и я хочу нарезать заголовки (первая строка), но заголовки -фактированных файлов (хотя и такие же) имеют случайные порядки.

Благодаря

+0

вы можете получить индекс с помощью 'Array.indexOf ('тарелки')' – rzr

+1

Каких значений параметров '0, 1 '? И почему эти параметры дают то же значение, что и вызов с «черным» в качестве параметра? –

+1

Кроме того, не переопределяйте 'Array'; это конструктор для массивов и переопределение, это сломает много вещей. – rzr

ответ

2

Вы можете просто цикл по 2D массива и вызвать slice(j) на каждом массиве:

for(item in myArray) 
    Array[item] = myArray[item].slice(2); 

Вот пример фрагмента:

var myArray = [["a", "b", "c"], ["car", "hat", "plate"], ["red", "green", "black"]]; 
 

 
for(item in myArray) 
 
    myArray[item] = myArray[item].slice(2); 
 

 
console.log(myArray);

Использование "black" как параметр, который проходит через каждый массив и находит такой элемент. Когда вы найдете матч просто называют indexOf(), чтобы получить надлежащий index и использовать то, что будет 2:

var index = "black"; 

for(item in myArray) 
    if(myArray[item].indexOf(index) != -1) 
     index = myArray[item].indexOf(index); 

// index = 2 

Примечание: Там будут проблемы, когда есть больше чем один "black", в этом случае index будет последним "black" найдено в myArray.

+2

Этот код приводит к правильному ответу для примера, но на самом деле это не имеет смысла с некоторыми деталями вопроса: а именно, с параметрами slice function ('0, 1' и' 'black''). –

+0

@NoahFreitas Я думаю, что OP означает «0,1», чтобы удалить элементы в индексе «0,1» и сохранить их на '2'. и «черный», просто являющийся вторым элементом одного из массивов. –

+0

@NoahFreitas: Вы правы «Noah», я хочу использовать «черный» как параметр, и со временем это может быть на разных индексах, которые я не знаю. – pebox11

1

Если вы хотите использовать значение элемента массива для поиска, используйте indexOf().

myArray = [["a", "b", "c"], ["car", "hat", "plate"], ["red", "green", "black"]]; 

    var index = myArray.indexOf("black"); 

    for(value in myArray) 
     myArray[value] = myArray[value].slice(index); 
+4

Что такое 'фрукты'? –

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