Javascript 复制对象内部的属性
Javascript copy properties inside an object
我有一个对象如下;
record = {
prop1: 'X',
prop2: 'Y',
prop3: 'Z'
}
现在我想将所有这些属性复制到“记录”内的“行”属性。所以,它应该看起来像;
record = {
row: {
prop1: 'X',
prop2: 'Y',
prop3: 'Z'
}
}
虽然我可以使用
record.row = record;
我要的是
- 属性 prop1/prop2/prop3 在将它们复制到 record.row
后作为“记录”的直接子项删除
- 上面的语句最终也重复了我想避免的行内的属性(某种循环的东西)
如何才能同时满足这两个条件?
P.S: "propX" 都是简单的字符串值,我可以 deep/shallow copy
这个呢
record = {
prop1: 'X',
prop2: 'Y',
prop3: 'Z'
}
record = {row:{...record}}
或
record = {
prop1: 'X',
prop2: 'Y',
prop3: 'Z'
}
record = Object.assign({},{row:record})
你可以这样做:
let record = {
prop1: 'X',
prop2: 'Y',
prop3: 'Z'
}
record = { ...record, row: record }
对于旧版本的节点,您可以改为这样做:
var record = {
prop1: 'X',
prop2: 'Y',
prop3: 'Z'
};
let newRecord = {}
Object.assign(newRecord, {
row: record
});
// console.log(newRecord)
这个能解决吗?我假设您希望覆盖原始变量。
record = {
prop1: 'X',
prop2: 'Y',
prop3: 'Z'
}
var tempRecord = {record:record}
record = tempRecord
解决方案一
var record = {
prop1: 'X',
prop2: 'Y',
prop3: 'Z'
}
let newRecord = {row:{}}
Object.keys(record).forEach(key=> newRecord.row[key] = record[key]);
方案二
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;
}
方案三:
var record = {
prop1: 'X',
prop2: 'Y',
prop3: 'Z'
}
record = {row:{...record}}
我有一个对象如下;
record = {
prop1: 'X',
prop2: 'Y',
prop3: 'Z'
}
现在我想将所有这些属性复制到“记录”内的“行”属性。所以,它应该看起来像;
record = {
row: {
prop1: 'X',
prop2: 'Y',
prop3: 'Z'
}
}
虽然我可以使用
record.row = record;
我要的是
- 属性 prop1/prop2/prop3 在将它们复制到 record.row 后作为“记录”的直接子项删除
- 上面的语句最终也重复了我想避免的行内的属性(某种循环的东西)
如何才能同时满足这两个条件? P.S: "propX" 都是简单的字符串值,我可以 deep/shallow copy
这个呢
record = {
prop1: 'X',
prop2: 'Y',
prop3: 'Z'
}
record = {row:{...record}}
或
record = {
prop1: 'X',
prop2: 'Y',
prop3: 'Z'
}
record = Object.assign({},{row:record})
你可以这样做:
let record = {
prop1: 'X',
prop2: 'Y',
prop3: 'Z'
}
record = { ...record, row: record }
对于旧版本的节点,您可以改为这样做:
var record = {
prop1: 'X',
prop2: 'Y',
prop3: 'Z'
};
let newRecord = {}
Object.assign(newRecord, {
row: record
});
// console.log(newRecord)
这个能解决吗?我假设您希望覆盖原始变量。
record = {
prop1: 'X',
prop2: 'Y',
prop3: 'Z'
}
var tempRecord = {record:record}
record = tempRecord
解决方案一
var record = {
prop1: 'X',
prop2: 'Y',
prop3: 'Z'
}
let newRecord = {row:{}}
Object.keys(record).forEach(key=> newRecord.row[key] = record[key]);
方案二
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;
}
方案三:
var record = {
prop1: 'X',
prop2: 'Y',
prop3: 'Z'
}
record = {row:{...record}}