Javascript:如何循环和更改键名?

lau*_*kok 3 javascript for-loop

如何更改键名称但键入其值?

例如,我存储了以下 json 数据:

{ particles: 
   { name: 'particles',
     values: [ [Object], [Object], [Object], [Object], [Object] ] },
  timestamps: 
   { name: 'timestamps',
     values: [ [Object], [Object], [Object], [Object], [Object] ] } 
}
Run Code Online (Sandbox Code Playgroud)

我将循环此输入并更改密钥:

{ particles: 'particle', timestamps: 'timestamp' }
Run Code Online (Sandbox Code Playgroud)

更改particlesparticletimestampstimestamp

我的尝试:

for (var property in data) {
   stored[data[property]] = stored[property].values;
   stored[property].name = data[property];
}
Run Code Online (Sandbox Code Playgroud)

我只设法更改name存储数据中的值,但没有更改名称......

有任何想法吗?

Pra*_*lan 5

通过获取旧属性值来分配新属性,然后删除旧属性。

var data = {
  particles: {
    name: 'particles',
    values: []
  },
  timestamps: {
    name: 'timestamps',
    values: []
  }
}

var newK = {
  particles: 'particle',
  timestamps: 'timestamp'
};

// get all object keys and iterate over them
Object.keys(newK).forEach(function(ele) {
  // assign object property based on old property value
  data[newK[ele]] = data[ele];
  // update name property
  data[newK[ele]].name = newK[ele];
  // delete old object property
  delete data[ele];
})

console.log(data);
Run Code Online (Sandbox Code Playgroud)