编辑JavaScript对象

时间:2018-03-17 23:38:50

标签: javascript

我有这个对象:

obj = {key : val,
      key1 : val1,
      key2 : {key21 : val21,key22 : val22},
      key3 : val3}

我想生成一个新对象:

objnew = {key : val,
         key1 : val1,
         key21 : val21,
         key22 : val22,
         key3 : val3}

3 个答案:

答案 0 :(得分:1)

根据您的意见,如果确实想要出于任何原因保留订单,并且除了key2之外不想做任何其他事情,请在此处'可能的解决方案。

有关对象键顺序的信息,请阅读this question。简而言之,在大多数情况下,依靠它很可能是一个坏主意。您最好使用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);




答案 1 :(得分:0)

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

答案 2 :(得分:0)

你走了:

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);
相关问题