【问题标题】:How to sort a key value pair of array in javascript如何在javascript中对数组的键值对进行排序
【发布时间】:2020-12-29 07:03:22
【问题描述】:

所以我从firebase 获取了这个数组,我一直在尝试映射该数组并且该数组位于键值对中

{
  A: {name: "test1", views: "20"},
  B: {name: "test2", views: "30"},
  C: {name: "test3", views: "23"}
}

我想映射它们,或者如果我可以像这样反转这个数组

{ C: {}, B: {}, A: {}}

我在 react native 中做这一切,所以请提出一些解决方案。

【问题讨论】:

  • 你上面的不是一个数组,它是一个有多个对象的对象
  • [] = 数组,{} = 对象
  • 你想做什么,改变对象(字典)中的位置没有意义?

标签: javascript react-native


【解决方案1】:

如果您只想按字母顺序排序。

const unsorted = {
    A: {name: "test1", views: "20"},
    B: {name: "test2", views: "30"},
    C: {name: "test3", views: "23"}
}

const sorted = {};
Object.keys(unsorted).sort().forEach(key =>  {
  sorted[key] = unsorted[key];
});

或按字母顺序倒序排列。

Object.keys(unsorted).sort().reverse().forEach(key =>  {
  sorted[key] = unsorted[key];
});

【讨论】:

    【解决方案2】:

    颠倒从对象中提取键的顺序有点烦人,因为您必须将它们全部取出,然后按照您想要的顺序将它们全部放回:

    function reverse(o) {
        let entries = Object.entries(o).reverse();
        entries.forEach(e => delete o[e[0]]);
        entries.forEach(e => o[e[0]] = e[1]);
    }
    

    此代码通过改变对象来工作,从而最终保持其他对象对该对象的引用有效;如果对象不是默认值,则改变对象对于维护对象的正确原型也很重要。如果你想克隆它,你应该小心复制相同的原型。

    【讨论】:

      【解决方案3】:

      所以我在网上搜索并找到了这个 如上所述,你们建议它不是一个数组,它是一个对象,可以这样排序

      let list = Object.entries(snapshot.val())
          .sort(function (x, y) {
            return x[1].spectators - y[1].spectators;
          })
          .reverse();
      

      这是用于升序的降序删除 reverse()

      谢谢!

      【讨论】:

        猜你喜欢
        • 2018-03-06
        • 2021-10-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-23
        相关资源
        最近更新 更多