如何将{2:'b',3:'c',1:'a'}转换成[{1:'a'},{2:'b'},{3:'c'}]?
发布于 2017-08-21 17:27:42
使用Object.keys + Array.map非常简单,您真的不需要寄存:
const obj = {2:'b',3:'c',1:'a'};
const arr = Object.keys(obj).map(key => ({ [key]: obj[key] }))
console.log(arr)
关于缺少sort函数,上面的代码利用了这样一个事实:数字索引对象键是按规格顺序存储的。请自己检查订单:
console.log({2:'b',3:'c',1:'a'})
以下是规格的相关部分
9.1.12 [OwnPropertyKeys] 当调用O的[OwnPropertyKeys]内部方法时,将执行以下步骤:
发布于 2017-08-21 17:34:18
在即将使用Object.entries的Javascript中,您可以用单个对象映射一个新的数组。
var data = {2:'b',3:'c',1:'a'},
result = Object
.entries(data)
.sort((a, b) => a[0] - b[0])
.map(([k, v]) => ({ [k]: v }));
console.log(result);.as-console-wrapper { max-height: 100% !important; top: 0; }
有了房客,你可以用
var data = {2:'b',3:'c',1:'a'},
result = _
.chain(data)
.toPairs(data)
.sortBy([0])
.map(o => _.fromPairs([o]));
console.log(result);.as-console-wrapper { max-height: 100% !important; top: 0; }<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.15.0/lodash.min.js"></script>
发布于 2017-08-21 17:29:16
Lodash并不是真正需要完成您想要的东西,但是我仍然会添加它,并添加一个排序函数。我还包括了原生的JavaScript方式。
const obj = {b: 3, c: 2, a: 1};
const sortByKeys = object => {
const keys = Object.keys(object)
const sortedKeys = _.sortBy(keys)
return _.map(sortedKeys, key => ({ [key]: object[key]}))
}
// the lodash way, and sorted
console.log(sortByKeys(obj))
// simpler way
const result = Object.keys(obj)
.map(key => ({ [key]: obj[key] }))
console.log(result)<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.js"></script>
https://stackoverflow.com/questions/45802617
复制相似问题