[英]Javascript copy properties inside an object
I have an object as below;我有一个 object 如下;
record = {
prop1: 'X',
prop2: 'Y',
prop3: 'Z'
}
Now I want all these properties to be copied to a "row" attribute inside "record".现在我希望将所有这些属性复制到“记录”内的“行”属性中。 So, it should look like;
所以,它应该看起来像;
record = {
row: {
prop1: 'X',
prop2: 'Y',
prop3: 'Z'
}
}
While I can get that using虽然我可以使用
record.row = record;
What I want is我想要的是
How can I achieve this satisfying both the conditions?我怎样才能同时满足这两个条件? PS: "propX" are all simple string values, I am fine with a deep/shallow copy
PS:“propX”都是简单的字符串值,我可以用深/浅拷贝
what about this那这个呢
record = {
prop1: 'X',
prop2: 'Y',
prop3: 'Z'
}
record = {row:{...record}}
or或者
record = {
prop1: 'X',
prop2: 'Y',
prop3: 'Z'
}
record = Object.assign({},{row:record})
You can do:你可以做:
let record = {
prop1: 'X',
prop2: 'Y',
prop3: 'Z'
}
record = { ...record, row: record }
For older version of node, you can do this instead:对于旧版本的节点,您可以这样做:
var record = {
prop1: 'X',
prop2: 'Y',
prop3: 'Z'
};
let newRecord = {}
Object.assign(newRecord, {
row: record
});
// console.log(newRecord)
Does this solve it?这能解决吗? I assume you want the original variable to be overwritten.
我假设您希望覆盖原始变量。
record = {
prop1: 'X',
prop2: 'Y',
prop3: 'Z'
}
var tempRecord = {record:record}
record = tempRecord
Solution-1解决方案-1
var record = {
prop1: 'X',
prop2: 'Y',
prop3: 'Z'
}
let newRecord = {row:{}}
Object.keys(record).forEach(key=> newRecord.row[key] = record[key]);
Solution-2解决方案-2
var record = {
prop1: 'X',
prop2: 'Y',
prop3: 'Z'
}
let newRecord = {};
for (let[key,value] of Object.entries(record)) {
if (!newRecord['row']) {
newRecord = {
row: {}
};
}
newRecord["row"][key] = value;
}
Solution-3:解决方案3:
var record = {
prop1: 'X',
prop2: 'Y',
prop3: 'Z'
}
record = {row:{...record}}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.