编辑 JavaScript 对象



我有这个对象:

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);

最新更新