首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何使用Lodash按顺序将对象转换为数组

如何使用Lodash按顺序将对象转换为数组
EN

Stack Overflow用户
提问于 2018-10-22 05:46:30
回答 2查看 159关注 0票数 0

说我有异议:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
obj {
  1:{
    index: 3
  },
  2:{
    index: 1
  },
  3:{
    index: 2
  },
  4:{
    index: 0
  }
}

我想把它转换成一个数组,但是按"index“的顺序,所以输出应该是

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[ { index: 0 }, { index: 1 }, { index: 2 }, { index: 3 } ]

就像_.values,但是能够根据属性进行排序吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-10-22 06:17:40

你不会找到一种方法来做你想做的任何事情。相反,您应该将您的操作分成更小的块,并将它们链接起来。所以正如你所写的:

类似于_.values,但能够按属性进行排序

您可以编写两个操作:从映射中提取值(使用_.values),然后根据属性对结果数组进行排序(这可以由_.sortBy完成)。

要在Lodash中启动一个操作链,请使用_.chain并实现一个链,使用chain.value()

片段:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const obj = {
    1:{
        index: 3
    },
    2:{
        index: 1
    },
    3:{
        index: 2
    },
    4:{
        index: 0
    }
};

const result = _.chain(obj)
    .values()
    .sortBy('index')
    .value();

console.log(result);
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.js"></script>

票数 1
EN

Stack Overflow用户

发布于 2018-10-22 08:20:24

您真的不需要这样的库,因为在普通的JS中,它实际上与Object.valuessort一样。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const obj = { 1:{ index: 3 }, 2:{ index: 1 }, 3:{ index: 2 }, 4:{ index: 0 } }

const result = Object.values(obj).sort((a,b) => a.index - b.index)

console.log(result)

但是,如果您真的需要lodash,那么这实际上就是orderbysortBy,因为它们处理的对象不需要执行values等操作:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const obj = { 1:{ index: 3 }, 2:{ index: 1 }, 3:{ index: 2 }, 4:{ index: 0 } }

const result = _.orderBy(obj, 'index')  // or _.sortBy

console.log(result)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script>

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

https://stackoverflow.com/questions/52930957

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文