【问题标题】:Javascript order pushed data by keyJavascript命令按键推送数据
【发布时间】:2018-10-17 11:10:29
【问题描述】:

下面有这些数据,我想推入一个数组,但按名称(x)排序

这是数据:

params:
  name2:
    height: 2
  name0:
    height: 0
  name1:
    height: 3

这里是代码:

 data.f = []

  Object.keys(data.params).forEach((key, idx) => {
      data.f.push({
          ...data.params[key],
          name: `${idx} - ${key}`
      });
  })

目前它只是在读取它时将其推入数组中,但它不是有序的。

如何在阅读时或填充后订购它?

【问题讨论】:

标签: javascript yaml


【解决方案1】:
Object.keys(data.params)
.sort((a,b) => data.params[a].height > data.params[b].height)
.forEach((key, idx) => {
      data.f.push({
          ...data.params[key],
          name: `${idx} - ${key}`
      });
  })

【讨论】:

    【解决方案2】:

    您可以在之后使用带有自定义 compareFunction 的排序功能来完成此操作

    data.f.sort((a,b) => a.name > b.name)
    

    此外,如果我可以建议的话,您不需要创建一个数组并推入它。 你可以只使用地图功能并写:

    data.f = Object.keys(data.params).map((key, idx) => {
      return {
          ...data.params[key],
          name: `${idx} - ${key}`
      };
    });
    

    【讨论】:

    • 目前给我的排序是错误的...我需要名称:显示为带有 name0(最小名称编号)的最低 idx 例如:名称:0 - name0、1 - name1 等
    • 能否分享一些演示数据。在排序之前可能是您的data.f 数组的一部分
    猜你喜欢
    • 2011-12-10
    • 2016-08-16
    • 2012-05-15
    • 1970-01-01
    • 2016-09-17
    • 1970-01-01
    • 2019-12-12
    • 1970-01-01
    • 2014-03-14
    相关资源
    最近更新 更多