Определить, имеют ли значения вложенный массив в объекте - PullRequest
0 голосов
/ 14 октября 2018

У меня есть объект, который выглядит следующим образом:

 steps: {
        '36793745-4c52-42d2-91a5-dcdc9de2e8fa': [],
        'b23d8770-806f-44a9-aa2e-a21dd68f7977': [],
        '33571d58-b833-4a7d-a1a1-ec96366cb74a': [],
        'b1499917-7f82-49e5-9708-6237340a9610': []
      }

Каждый массив в этом объекте может быть массивом строк.

Я хотел бы проверить, есть ли какой-либо из этих массивовесть предмет, если они есть, я хотел бы вернуть true.

Меня не волнует проверка после того, как только кто-то вернет true, я счастлив.

Я пробовал что-то вроде Object.keys(steps).map(step => steps[step].length > 0), но это возвращает массив истинного или ложного[false, false, false, false]

Затем я попытался Object.keys(steps).filter(step => steps[step].length > 0), но это возвращает массив ключей элементов, которые имеют значение.

Я знаю, что на этом этапе я мог бы просто проверить длину результатано мне было интересно, есть ли лучший способ добиться этого.

Этот объект потенциально может значительно увеличиться в размерах, поэтому я надеялся на какой-то ранний выход, как только получу true

Ответы [ 2 ]

0 голосов
/ 14 октября 2018

Использовать some.

Может использоваться для проверки, соответствует ли хотя бы один элемент в массиве условию или нет.Как и Array.Filter, он принимает тестовую функцию, в которой он просматривает элемент исходного массива.

Возвращает true, если какой-либо элемент проходит тестовое условие.Если все элементы не пройдены в тестовой функции, возвращается false.он замыкает цепь, как только один из элементов проходит тестовую функцию.

const stepHasProp = Object.values(steps).some(array => array.length)
0 голосов
/ 14 октября 2018

Вы можете использовать значения и проверить длину массива.

var hasItems = Object.values(steps).some(array => array.length);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...