我有一个具有这种结构的对象。
const object = {
property1: null,
property2: {
array1: [],
array2: []
},
property3: {
prop1: null,
prop2: null
}
}
我需要检查对象中的每个属性或每个属性中的每个值,如果它是虚假的-null或空数组,则对其进行处理。否则就离开它。
考虑到某些属性具有嵌套属性等,我不确定该怎么做。
所有帮助将不胜感激。
答案 0 :(得分:0)
您可以使用for...in
循环来实现:
const object1 = {
property1: null,
property2: false,
prop3: "hello",
prop4: 1234
}
for (let attr in object1) {
if (!object1[attr]) {
console.log(attr, "this is false");
} else {
console.log(attr, "has a value");
}
}
答案 1 :(得分:0)
您可以采用迭代和递归的方法。
首先获取对象的条目,然后迭代键/值对。然后检查该值是否为null
或为空数组。如果是这样,请执行类似console.log
的操作并返回回调。
如果不检查对象,然后使用实际值再次调用该函数。
function iter(object) {
Object
.entries(object)
.forEach(([k, v]) => {
if (v === null || Array.isArray(v) && !v.length) {
console.log(k, 'is null or empty');
return;
}
if (v && typeof v === 'object') {
iter(v);
}
});
}
const object = { property1: null, property2: { array1: [], array2: [] }, property3: { prop1: null, prop2: null } };
iter(object);
答案 2 :(得分:0)
这将是一个完美的递归示例,因为它将动态地深入每个嵌套对象的对象结构。
const object = {
property1: null,
property2: {
array1: [],
array2: []
},
property3: {
prop1: null,
prop2: null
}
}
const findFalsey = obj => {
for(let key in obj) {
if(typeof obj[key] === 'object' && !Array.isArray(obj[key])) {
findFalsey(obj[key])
}
if(!obj[key] || (Array.isArray(obj[key]) && obj[key].length === 0 )) {
console.log('found falsey value')
}
}
}
findFalsey(object)