给定一个对象,如何获得用于描述它的名称?

时间:2019-03-05 11:36:37

标签: javascript json

我有一个JSON对象(mainObj),而该对象又具有对象(例如obj1obj2obj3)。我想要实现的是,当我检查遍历mainObj中每个obj的条件时,如果条件成立,我只想在String数组中添加该obj的名称。像

for(obj in mainObj){
 if(obj holds condition){
    add the descriptor of the obj (in string format) to an array (not the entire obj)
 }

1 个答案:

答案 0 :(得分:2)

您可以使用Object.keys()遍历对象键,然后使用Array.filter()过滤键,这里我正在检查内部对象是否具有属性show以及该属性是否是真的:

const mainObj = {
  obj1: { show: true, a: 1 },
  obj2: { show: false, a: 2 },
  obj3: { a: 3 },
  obj4: { show: true, b: 1 }
};

const result = Object.keys(mainObj).filter(key => mainObj[key].show);

console.log(result);

如果要使用for-in循环,则必须确保该属性是对象的一部分,并且不使用Object.hasOwnProperty()从其原型链继承:

const mainObj = {
  obj1: { show: true, a: 1 },
  obj2: { show: false, a: 2 },
  obj3: { a: 3 },
  obj4: { show: true, b: 1 }
};

const result = [];
for (const prop in mainObj) {
  if (mainObj.hasOwnProperty(prop) && mainObj[prop].show) {
    result.push(prop);
  }
}

console.log(result);