我有一个带有多个嵌套对象的退出复杂对象。 我想复制并更新该对象的所有 id 属性。
所以这个:
{
id: 1,
name: "A",
car: {
id: 2,
vendor: "xy"
}
..
}
应该变成这样:
{
id: 6,
name: "A",
car: {
id: 7,
vendor: "xy"
}
..
}
有没有办法用 JavaScript (TypeScript) 以简短而通用的方式实现这一点?
更新: 到目前为止我做了什么:
const a = new MyClass();
a.id = uuid();
a.name = "A"
a.car = new Car();
a.car.id = uuid();
a.car.vendor = "xy"
//copy a
const b = JSON.parse(JSON.stringify(a));
我想做的就是将 b 中的所有 id 增加 5。
最佳答案
您可以循环遍历 b
中的所有项目并执行两件事。如果它是 id
属性,请更改它(添加 5)。如果它是一个对象,则循环并检查两个相同的条件(递归函数)。您可以这样做:
function checkObject(obj) {
Object.keys(obj).forEach(function(prop) {
if (typeof obj[prop] == "object" && prop !== null) {
checkObject(obj[prop]);
}
else if (prop == "id") {
obj[prop] += 5;
}
})
}
然后你可以这样调用它:
function checkObject(obj) {
Object.keys(obj).forEach(function(prop) {
if (typeof obj[prop] == "object" && prop !== null) {
checkObject(obj[prop]);
}
else if (prop == "id") {
obj[prop] += 5;
}
})
}
var b = {
id: 1,
name: "A",
car: {
id: 2,
vendor: "xy"
}
}
checkObject(b);
console.log(b);
关于javascript - 嵌套对象: Update all attributes with same names,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53867629/