【问题标题】:Convert sequence of Array in own sequence按自己的顺序转换数组的序列
【发布时间】:2020-07-21 19:40:09
【问题描述】:

将列表数组转换为我自己的顺序

电流输出:

[
    { "key": "DG Power Output", "value": "6.00", "unit": "kWh", },
    { "key": "DG Run Time", "value": "5999999952", "unit": "minutes", },
    { "key": "Fuel Level (Before)", "value": "8.00", "unit": "liters", }
]

把它转换成

[
    { "key": "Fuel Level (Before)", "value": "8.00", "unit": "liters", },
    { "key": "DG Run Time", "value": "5999999952", "unit": "minutes", },
    { "key": "DG Power Output", "value": "6.00", "unit": "kWh", }
]

【问题讨论】:

  • 请添加订单和您的尝试。
  • 您应该将此作为问题发布。您是否在问如何根据对象的键对数组进行排序?你已经尝试过什么?
  • 另外请说明您想使用什么标准对数组进行排序
  • @Ash 我认为他正在提出挑战
  • 伙计们,我必须根据“DG 功率输出”之类的键对其进行排序

标签: javascript arrays angular typescript sorting


【解决方案1】:

我不完全确定要使用什么标准来对这个数组进行排序,但一般的方法是编写一个函数来比较两个元素并返回一个小于 0 的数字以使第一个元素先出现,如果是 0它们是相等的,并且大于 0 的数字表示第二个元素先出现。然后,您可以将此函数传递给Array.prototype.sort,如下所示:

const sorter = (a, b) => {
    if (a.key == b.key) return 0; // leave elements in place
    if (a.key > b.key) return -1; // a should come before b for descending order
    return 1; // b should come before a for descending order
};
const arr = [
    { "key": "DG Power Output", "value": "6.00", "unit": "kWh", },
    { "key": "DG Run Time", "value": "5999999952", "unit": "minutes", },
    { "key": "Fuel Level (Before)", "value": "8.00", "unit": "liters", }
];
console.log(arr.sort(sorter));

【讨论】:

    【解决方案2】:

    我会去的最基本的方法是访问索引,比如说

    var a = [
        { "key": "DG Power Output", "value": "6.00", "unit": "kWh", },
        { "key": "DG Run Time", "value": "5999999952", "unit": "minutes", },
        { "key": "Fuel Level (Before)", "value": "8.00", "unit": "liters", }
    ]
    

    那么,

    var b = [a[2], a[1], a[0]];
    

    这将提供您想要的输出,但它非常冒险且容易出错。

    【讨论】:

      【解决方案3】:

      您可以使用一个对象来获得正确的顺序并按描述该顺序的属性进行排序。

      var data = [{ key: "DG Power Output", value: "6.00", unit: "kWh" }, { key: "DG Run Time", value: "5999999952", unit: "minutes" }, { key: "Fuel Level (Before)", value: "8.00", unit: "liters" }],
          order = { "Fuel Level (Before)": 1, "DG Run Time": 2, "DG Power Output": 3 };
      
      data.sort(({ key: a }, {  key: b }) => order[a] - order[b]);
      
      console.log(data);

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-07-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-13
        • 1970-01-01
        相关资源
        最近更新 更多