如何在任何级别递归更改JS Object / JSON值?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在任何级别递归更改JS Object / JSON值?相关的知识,希望对你有一定的参考价值。
请注意,我提供的结构只是一个例子,但可以是任何东西。
主要目标是在任何级别递归地将我选择的键值更改为我选择的值。
以下是澄清的示例:
var items = {
price: 10,
child: {
price: 20,
child: {
price: 10
}
},
child2: {
price: 40,
child: {
price: 50,
child: [{ price: 30 }, { price: 40 }]
}
}
};
鉴于此,您如何将所有价格更改为0?
答案
这是一个大致的想法:
function f(obj, prop, val){
if (typeof obj == 'object'){
if (obj.hasOwnProperty(prop))
obj[prop] = val;
for (let i in obj)
f(obj[i], prop, val);
}
}
var items = {
price: 10,
child: {
price: 20,
child: {
price: 10
}
},
child2: {
price: 40,
child: {
price: 50,
child: [{ price: 30 }, { price: 40 }]
}
}
};
f(items, 'price', 0);
console.log(JSON.stringify(items));
另一答案
递归循环并检查密钥price
。
var items = { price: 10, child: { price: 20, child: { price: 10 } }, child2: { price: 40, child: { price: 50, child: [{ price: 30 }, { price: 40 }] } }};
function loop(obj) {
if (typeof obj !== 'object') return;
Object.keys(obj).forEach((k) => {
if (k === 'price') obj[k] = 0;
else loop(obj[k]);
});
}
loop(items);
console.log(items)
.as-console-wrapper { max-height: 100% !important; top: 0; }
以上是关于如何在任何级别递归更改JS Object / JSON值?的主要内容,如果未能解决你的问题,请参考以下文章