Как вывести false если все массивы пусты?
У меня есть массив с объектами, внутри каждого объекта есть еще массив. Функция должна выводить false, если в каждом объекте есть пустой массив.
items = [
{
id: '1',
title: "Group 1",
items: [
{ id: 'group1_item1', value: 'Title 1' },
{ id: 'group1_item2', value: 'Title 2' },
{ id: 'group1_item3', value: 'Title 3' },
]
},
{
id: '2',
title: "Group 2",
items: [
{ id: 'group2_item1', value: 'Title 4' },
{ id: 'group2_item2', value: 'Title 5' },
{ id: 'group2_item3', value: 'Title 6' },
]
},
]
Использую такую функцию, но она возвращает false в любом случае, если хоть один массив пуст, а другой нет, а нужно только если все массивы пусты. Возможно дико туплю и ответ перед глазами, но застрял на три дня уже( ХЭЛП!
function getResultSearch() {
let result;
const isEmpty = resultItems => !Object.values(resultItems).every(({ length }) => length);
for (let el of resultItems) {
result = el.items
}
return isEmpty (result)
}
Ответы (1 шт):
Автор решения: Aziz Umarov
→ Ссылка
С ходу можно такое придумать без рекурсии.
let items = [
{
id: '1',
title: "Group 1",
items: [
{ id: 'group1_item1', value: 'Title 1' },
{ id: 'group1_item2', value: 'Title 2' },
{ id: 'group1_item3', value: 'Title 3' },
]
},
{
id: '2',
title: "Group 2",
items: [
{ id: 'group2_item1', value: 'Title 4' },
{ id: 'group2_item2', value: 'Title 5' },
{ id: 'group2_item3', value: [ ] },
]
},
]
let items1 =
{
id: '1',
title: "Group 1",
items: [
]
}
let checkObjectForEmptyArray = (obj) => {
let stringifiedObj = JSON.stringify(obj);
return !stringifiedObj.includes('[') ? false : stringifiedObj.replaceAll('[]', '').includes("[")
}
console.log(checkObjectForEmptyArray(items));
console.log(checkObjectForEmptyArray(items1));