我有这个对象:
obj = {key : val,
key1 : val1,
key2 : {key21 : val21,key22 : val22},
key3 : val3}
我想生成一个新对象,如下所示:
objnew = {key : val,
key1 : val1,
key21 : val21,
key22 : val22,
key3 : val3}
根据您的评论,如果您真的出于任何原因想要保持订单,并且除了key2
之外不想这样做,这是一个可能的解决方案。
请阅读此问题以获取有关对象键顺序的信息。简而言之,在大多数情况下,依赖它很可能是一个坏主意。最好使用 Map
实例或仅使用数组。
let obj = {
key: 0,
key1: 1,
key2: {key21: 21, key22: 22},
key3: 3
};
let objArray = Object.keys(obj).map(key => ({key, value: obj[key]}));
let result = objArray.reduce((result, entry) =>
Object.assign(result, entry.key === 'key2' ? entry.value : {[entry.key]: entry.value})
, {});
console.log(result);
对于 2 级对象结构(具有 Object.keys()
和 Object.assign()
函数(:
var obj = {
'key' : 'val',
'key1' : 'val1',
'key2' : {'key21' : 'val21', 'key22' : 'val22'},
'key3' : 'val3'
};
Object.keys(obj).forEach(function(k){
if (typeof obj[k] === 'object') {
Object.assign(obj, obj[k]);
delete obj[k];
}
});
console.log(obj);
你来了:
var obj = {
key : 1,
key1 : 2,
key2 : { key21 : 3,key22 : 4 },
key3 : 5
};
Object.keys(obj).forEach(function(key) {
if(typeof obj[key] === 'object') {
Object.keys(obj[key]).forEach(function(innerKey) {
obj[innerKey] = obj[key][innerKey];
});
delete obj[key];
}
});
console.log(obj);