我需要更改嵌套变量属性。首先检查它是否存在,然后根据需要将其更改为“ N / A”。这就是我所拥有的。
"sed -n '/^x$/,/^y$/p'"
我不确定如何设置计数让我们直接通过goign更改值即可。似乎很简单,也许我错过了一些东西。
我可以在if语句中看到该值,但无法对实际属性值本身进行任何更改。基本上,如果值是空,则将其更改为“ N / A”
答案 0 :(得分:1)
您可以使用减少数组方法。首先使用 Object.keys 方法获取所有键。然后遍历键并检查计数是否为空。如果为null,则将其更改为“ N / A”。
const json = {
isCat: {
isAvaliable: true,
count: 5,
},
isDog: {
isAvaliable: true,
count: 10,
},
isFrog: {
isAvaliable: false,
count: null,
},
};
const ret = Object.keys(json).reduce((prev, c) => {
const p = prev;
if (!json[c].count) p[c] = { ...json[c], count: 'N/A' };
else p[c] = { ...json[c] };
return p;
}, {});
console.log(ret);
答案 1 :(得分:1)
使用Object.entries和Object.fromEntries可以将旧对象映射到新对象。如果count
属性是正确的,即不是null
,则将其映射通过,否则浅复制该元素,并使用新的count
值更新"N/A"
属性。这样可以避免更改原始对象。
const newJson = Object.fromEntries(Object.entries(json).map(([key, value]) => ([
key,
value.count ? value : { ...value,
count: 'N/A'
}
])));
const json = {
isCat: {
isAvaliable: true,
count: 5
},
isDog: {
isAvaliable: true,
count: 10
},
isFrog: {
isAvaliable: false,
count: null
}
};
const newJson = Object.fromEntries(Object.entries(json).map(([key, value]) => ([
key,
value.count ? value : { ...value,
count: 'N/A'
}
])));
console.log(newJson);
答案 2 :(得分:1)
另一个减少的解决方案。注意返回值中的逗号运算符。
const json = {isCat: {isAvaliable: true,count: 5,},isDog: {isAvaliable:true,count: 10,},isFrog: {isAvaliable: false,count: null,},};
const res = Object.keys(json).reduce((pV,cV)=>(json[cV].count==null?json[cV].count='N/A':null,json),{});
console.log(res);