Какова длина пустого 2d массива в JS? - PullRequest
0 голосов
/ 04 ноября 2019

Я пытаюсь оценить, является ли мой 2d массив

let lines=[[]]

пустым или нет, поэтому я проверил lines.length==0, который вернул false. Поэтому я вошел в консоль, чтобы уточнить длину строк, сразу после того, как она была определена, и она вернула 1. Мне интересно, есть ли способ различать строки в их пустом состоянии и когда он содержит только один массив.

Я попытался записать размер пустого 2d-массива ([[]]), который равен единице, и один с некоторыми данными в первом массиве ([[1,2,3,4]]), оба из которых возвращают один.

Ответы [ 3 ]

2 голосов
/ 04 ноября 2019
if (lines.flat().length === 0)
1 голос
/ 04 ноября 2019

Пустая матрица действительно должна быть представлена ​​простой []. Чтобы также обнаружить случай, который вы упомянули (т.е. [[]]), вы должны сделать:

if (lines.length === 0 || lines[0].length === 0)

Но [[]] на самом деле говорит, что у вас есть матрица с одной строкой и без столбцов, что противоречит интуиции,Пустая матрица имеет нет строк, и больше ничего не нужно говорить, поэтому [].

0 голосов
/ 04 ноября 2019

lines - это массив с одним элементом, пустой массив.

Если вы хотите проверить, что ни один элемент в lines не является заполненным массивом, вы можете проверить с помощью предиката every:

lines.every(elem=>!elem.length)

Это позволит проверить, что каждый элемент lines имеет значение Фолси для length. Более строго, вы можете сделать

lines.every(elem=>elem instanceof Array && elem.length===0)

, чтобы проверить, что каждый элемент lines является Array, который имеет length 0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...