lodash - 将项目/变换对象转换为键值数组

sam*_*tin 24 javascript lodash

我将使用forOwn迭代对象的属性并手动创建一个数组,并且无法帮助认为已经有一个oneliner已经可用.

{ 
  prop1 : "value",
  prop2: { sub:1}
}
Run Code Online (Sandbox Code Playgroud)

至:

[ 
   {key: "prop1", value: "value"},
   {key: "prop2", value: {sub:1}}
]
Run Code Online (Sandbox Code Playgroud)

谢谢

Ori*_*ori 32

你可以使用lodash的_.map()和简写属性名:

const obj = { 
  prop1 : "value",
  prop2: { sub:1}
};

const result = _.map(obj, (value, prop) => ({ prop, value }));

console.log(result);
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.2/lodash.min.js"></script>
Run Code Online (Sandbox Code Playgroud)

或者您可以使用Object#entrieswith Array.map()和数组解构来完成它:

const obj = { 
  prop1 : "value",
  prop2: { sub:1}
};

const result = Object.entries(obj).map(([prop, value]) => ({ prop, value }));

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


Jos*_*eph 11

你根本不需要lodash:

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


小智 10

一点点ES6:

_.map( obj, (value, key) => ({key,value}) )