Не удается проверить пустоту массива при индексировании в Javascript

#javascript #arrays

Вопрос:

У меня есть массив в Javascript. Это похоже на то, что показано ниже.

source_array=[["A","B","C"],["A","B","C"],["A","B","C"]] ;

Я создаю его с помощью source_array.push(anotherArray) . Во время выполнения моего кода я удаляю записи из индексов одну за source_array[1].splice(0,1) другой . Так что от [["A","B","C"],["A","B","C"],["A","B","C"]] я ожидаю получить [["A","B","C"],["B","C"],["A","B","C"]] ;

Если я буду делать это достаточно часто, то в итоге получу [["A","B","C"],[],["A","B","C"]] .

Как правильно проверить, пуст ли теперь source_array[1]? Похоже, у меня это не работает.

If (source_array[1] == undefined) это оказывается ЛОЖЬЮ вместо ИСТИНЫ. Он выдает ЛОЖЬ только после того, как я закончу удалять элементы. Это хорошо работает, если я проверю наличие source_array[2] in a source_array[["A","B","C"],["A","B","C"]]

Я думаю, что перепробовал все, что нашел в Интернете.

Я чувствую, что это будет что-то базовое, но я дилетант, и это…бьет меня.

Комментарии:

1. if (source_array[1].length === 0) ?

2. Пустого массива нет undefined -вам нужно проверить, является ли это .length свойством 0 .

Ответ №1:

Хотя массив пуст, он не является неопределенным.

Всегда проверяйте свойство длины массива, чтобы определить, является ли целевой массив пустым.

Таким образом:

 let arr = [];
let arr2 = ['foo', 'bar'];

arr.length === 0;  // true, empty
arr2.length === 0; // false, populated