我有一个JSON对象(mainObj
),而该对象又具有对象(例如obj1
,obj2
,obj3
)。我想要实现的是,当我检查遍历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)
}
答案 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);