这是示例对象:
实际上不称为value1
,value2
等的对象内部的值
它们都有不同的名称
data
是从api获得的数据。
let object = {
id: '1',
gen: {
value1: data.value1,
value2: data.value2,
value3: data.value3,
value4: data.value4, // etc
},
somethingelse: {
one: {
value1: data.value1,
value2: data.value2,
value3: data.value3,
value4: data.value4, // etc
},
two: {
value1: data.value1,
value2: data.value2,
value3: data.value3,
value4: data.value4, // etc
},
three: {
value1: data.value1,
value2: data.value2,
value3: data.value3,
value4: data.value4, // etc
}
}
};
我知道我可以将|| 0
添加到每个NaN
中,但这将是很多难看的代码
有时还有数学运算会返回if (!object.value1) object.value1 = 0
而且我不能只是做:
{{1}},因为我需要100行重复的代码
答案 0 :(得分:0)
您可以将相同的逻辑应用于具有更多循环的更深层对象:
for(let key in myObject) {
if(myObject[key] === undefined || myObject[key] === null)
myObject[key] = 0;
}
如果您的对象中有更多对象,请进行迭代,然后再按键等。
答案 1 :(得分:0)
如果可以使用ES6,则可以将数据包装在proxy中,该数据将返回0
而不是未定义。然后使用它制作对象:
let real_data = {value1: 10, value2: 2}
// proxy for real data
let data = new Proxy(real_data, {
get(target, name, receiver) {
let val = Reflect.get(target, name, receiver);
return val === undefined ? 0 : val
}
});
// just use data now
let object = {id: '1',gen: {value1: data.value1, value2: data.value2,value3: data.value3,value4: data.value4, },somethingelse: {one: {value1: data.value1,value2: data.value2,value3: data.value3,value4: data.value4, },two: {value1: data.value1,value2: data.value2,value3: data.value3,value4: data.value4, },three: {value1: data.value1,value2: data.value2,value3: data.value3,value4: data.value4, }}};
console.log(object)
答案 2 :(得分:-1)
您可以使用递归,使用递归将undefined
替换为0
。
const data ={}
let object = { id: '1', gen: { value1: data.value1, value2: data.value2, value3: data.value3, value4: data.value4,}, somethingelse: { one: { value1: data.value1, value2: data.value2, value3: data.value3, value4: data.value4, }, two: { value1: data.value1, value2: data.value2, value3: data.value3, value4: data.value4, }, three: { value1: data.value1, value2: data.value2, value3: data.value3, value4: data.value4, } } };
function removeUnf(obj){
for(let key in obj){
if(obj[key] && typeof obj[key] === "object"){
removeUnf(obj[key])
}
else obj[key] = obj[key] === undefined ? 0 : obj[key]
}
}
removeUnf(object);
console.log(object)