Как проверить, если и объект пуст (глубоко)? - PullRequest
0 голосов
/ 06 июля 2018

Возьми это:

var lists:{
  item1:{}
  ,item2:{}
  ,item3:{}
  ,item4:{}
}

Поскольку он практически пустой, я хочу функцию (возможно, но не обязательно _lodash), которая проверяет ее и говорит, что она пуста.

Что-то вроде

is_empty(lists) // >> true (because every property resolves to an empty object)

Как?

Ответы [ 2 ]

0 голосов
/ 06 июля 2018

Вы можете перебирать значения объекта и проверять, все ли они пусты:

var lists = {
  item1:{},
  item2:{},
  item3:{},
  item4:{}
}

//ES6:
function isEmpty(obj) {
    return Object.keys(obj).every(k => !Object.keys(obj[k]).length)
}

console.log(isEmpty(lists));

// ES5
function isEmpty(obj) {
    return Object.keys(obj).every(function(k) {
        return !Object.keys(obj[k]).length}
    )
}

console.log(isEmpty(lists));
0 голосов
/ 06 июля 2018

Если lists всегда является объектом объектов, вы можете перебрать все значения с помощью Object.values и проверить, что у каждого значения (внутреннего объекта) нет ключей:

const isEmpty = outer => Object.values(outer).every(
  inner => Object.keys(inner).length === 0
);

var lists = {
  item1:{}
  ,item2:{}
  ,item3:{}
  ,item4:{}
}
var lists2 = {
  item1:{}
  ,item2:{}
  ,item3:{}
  ,item4:{}
  ,item5:{ foo: 'bar' }
}
console.log(isEmpty(lists));
console.log(isEmpty(lists2));
...