首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何利用Lodash将对象转换为排序数组

如何利用Lodash将对象转换为排序数组
EN

Stack Overflow用户
提问于 2017-08-21 17:23:06
回答 4查看 912关注 0票数 0

如何将{2:'b',3:'c',1:'a'}转换成[{1:'a'},{2:'b'},{3:'c'}]

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-08-21 17:27:42

使用Object.keys + Array.map非常简单,您真的不需要寄存:

代码语言:javascript
运行
复制
const obj = {2:'b',3:'c',1:'a'};
const arr = Object.keys(obj).map(key => ({ [key]: obj[key] }))

console.log(arr)

关于缺少sort函数,上面的代码利用了这样一个事实:数字索引对象键是按规格顺序存储的。请自己检查订单:

代码语言:javascript
运行
复制
console.log({2:'b',3:'c',1:'a'})

以下是规格的相关部分

9.1.12 [OwnPropertyKeys] 当调用O的[OwnPropertyKeys]内部方法时,将执行以下步骤:

  1. 让密钥成为一个新的空列表。
  2. 对于作为整数索引的O的每个属性键P,按升序数字索引顺序 2a。添加P作为键的最后一个元素。
票数 6
EN

Stack Overflow用户

发布于 2017-08-21 17:34:18

在即将使用Object.entries的Javascript中,您可以用单个对象映射一个新的数组。

代码语言: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);
代码语言:javascript
运行
复制
.as-console-wrapper { max-height: 100% !important; top: 0; }

有了房客,你可以用

代码语言:javascript
运行
复制
var data = {2:'b',3:'c',1:'a'},
    result = _
        .chain(data)
        .toPairs(data)
        .sortBy([0])
        .map(o => _.fromPairs([o]));

console.log(result);
代码语言:javascript
运行
复制
.as-console-wrapper { max-height: 100% !important; top: 0; }
代码语言:javascript
运行
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.15.0/lodash.min.js"></script>

票数 2
EN

Stack Overflow用户

发布于 2017-08-21 17:29:16

Lodash并不是真正需要完成您想要的东西,但是我仍然会添加它,并添加一个排序函数。我还包括了原生的JavaScript方式。

代码语言: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)
代码语言:javascript
运行
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.js"></script>

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45802617

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档