2013-03-01 3 views
0

Я использую массив для обработки данных электронной таблицы и манипулирования им. В этом случае я ищу значение true в столбце, а затем хочу удалить эту строку. Вот что у меня есть:Как удалить строку после сопоставления значения в массиве?

for (r = 1 ; r < Array1.length; r++) { 
    if(Array1[r][33]== true) { 
     calcSheet.deleteRow(Array1[r])}; 
    } 

я вижу проблему, но не знаю, решение: firstArray [г] возвращает всю строку в виде массива, а не номер строки. Как я могу получить номер строки? Это ускользает от меня.

ОБНОВЛЕНИЕ: Вот код завершения. Еще раз спасибо Сержу.
Вы заметите, что Серж указал на проблему с сопоставлением таблиц и массивов. Этот код также заботится об этом; это то, что делают все эти r.

var rr = 0 

for (r = 1 ; r < firstArray.length; r++) { // iterate the first col of masterSheet 
    if(firstArray[r][33]== true) { 
    var rrr= rr + r 
    calcSheet.deleteRow(rrr +1); 
    rr-- 
    } 
}  

ответ

2

Строка листа, соответствующая этот массив строка r+1 если массив действительно завершен, то есть, начиная с row1 (я предполагаю, что это первая строка, содержащая некоторые заголовки, и именно поэтому вы итерация от 1 в массиве).

Но будет другой побочный эффект, если вы удалите строку: массив больше не будет точным зеркалом листа (он будет больше на 1 строку при каждом удалении строки).

Существует много способов обхода этой проблемы, сообщите нам, если вы хотите получить некоторые советы.

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