У меня есть два вложенных цикла; в основном то, что я пытаюсь сделать, это вставить несколько строк внутри массива, который содержит строки текста;JS - неопределенный объект (но объект определен)
Чай заполнителя
'// <<<PERMISSIONS TREE>>>'
и вставить несколько строк сразу после него; прежде чем сделать это, я проверяю, если некоторые линии уже есть после выполнения указанных выше заполнителем и перед
'// <<<END PERMISSIONS TREE>>>'
В этом случае мне нужно сначала удалить эти строки, а затем вставьте новые
for(i = 0; i < lines.length; i++) {
if (lines[i].indexOf('// <<<PERMISSIONS TREE>>>') >= 0) {
i++;
var j = i;
console.log(lines[j]); //here lines[j] is defined and printed on screen correctly
console.log(lines[j].indexOf('// <<<END PERMISSIONS TREE>>>')); //this also works
//start delete loop - the following line doesn't work
while ((lines[j].indexOf('// <<<END PERMISSIONS TREE>>>') < 0) && (j < lines.length)) {
lines.splice(j, 1);
j++;
}
lines.splice(i , 0, result); // insert result in the correct place, this works
break;
}
}
В линия, где я начинаю время цикла, я получаю ошибку:
Cannot call method 'indexOf' of undefined
, но две строки выше (бревен) работ; Я просто не могу понять, почему ...
Этот код работает в nodejs, не знаю, имеет ли это значение;
Как насчет того, когда 'i' равно' lines.length - 1', а затем вы увеличиваете его на 1 и пытаетесь посмотреть на 'lines [j]' после этого? – Pointy
Также в этом цикле 'while' вы проверяете' .indexOf() '** перед **, вы проверяете, находится ли' j' в диапазоне! – Pointy
Тогда значение * не * "определено". Двигатель JS прав. Вы неправы. Исправьте/обновите утверждение (и заголовок). В чем проблема? При необходимости используйте отладчик. – user2864740