如何将javascript对象转换为键/值数组

Rob*_*der 28 javascript arrays javascript-objects

给定一个JavaScript对象,如何将其转换为对象数组(每个对象都有键值)?

例:

var data = { firstName: 'John', lastName: 'Doe', email: 'john.doe@gmail.com' }
Run Code Online (Sandbox Code Playgroud)

结果如下:

[
  { key: 'firstName', value: 'John' },
  { key: 'lastName', value: 'Doe' },
  { key: 'email', value: 'john.doe@gmail.com' }
]
Run Code Online (Sandbox Code Playgroud)

ati*_*589 53

var data = { firstName: 'John', lastName: 'Doe', email: 'john.doe@gmail.com' }
var output = Object.entries(data).map(([key, value]) => ({key,value}));

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

灵感来自这篇文章


isv*_*all 15

使用map功能

var data = { firstName: 'John', lastName: 'Doe', email: 'john.doe@gmail.com' };

var result = Object.keys(data).map(key => ({ key, value: data[key] }));

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

  • 或者将变量名更改为地图中的键,并且用户使用对象属性简写`key =>({key,value:data [key]})` (2认同)

小智 10

您可以迭代对象的属性并为每个属性创建一个新对象.

var data = { firstName: 'John', lastName: 'Doe', email: 'john.doe@gmail.com' };
var result = [];

for(var key in data)
{
    if(data.hasOwnProperty(key))
    {
        result.push({
            key: key,
            value: data[key]
        });
    }
}
Run Code Online (Sandbox Code Playgroud)


Rob*_*der 6

先前的答案使我认为有更好的方法...

Object.keys(data).map(function(key) {
  return { key, value: data[key] };
});
Run Code Online (Sandbox Code Playgroud)

或在ES6中使用箭头功能:

Object.keys(data).map((key) => ({ key, value: data[key] }));
Run Code Online (Sandbox Code Playgroud)


Rob*_*son 5

简化生活,并在地图中使用es6语法

    var output = Object.keys(data).map(key => {
      return {
        key: key,
        value: data[key]
      };
    })
Run Code Online (Sandbox Code Playgroud)