簡體   English   中英

如何在javascript中對數組的鍵值對進行排序

[英]How to sort a key value pair of array in javascript

所以我從firebase獲取了這個數組,我一直在嘗試映射該數組,並且該數組位於鍵值對中

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

我想要么映射它們,要么我可以像這樣反轉這個數組

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

我在 react native 中做所有這些,所以請提出一些解決方案。

如果您只想按字母順序對其進行排序。

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];
});

所以我在網上搜索並發現了這個如上所述,你們建議它不是一個數組,它是一個對象,可以這樣排序

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

這是用於升序的降序刪除 reverse()

謝謝!

這是一個Object ,要使用.map()你必須有一個Array 在 JavaScript 中,兩者都是 typeof object但是,Array 原型與 Object 原型有不同的標准方法。 要設置Array請使用[]Objects = {}

數組索引是數字,而對象可以有鍵作為 str。

下面是一個使用“數組”的例子!

 const values = [ {name: "test1", views: "20"}, {name: "test2", views: "30"}, {name: "test3", views: "23"} ]; // Array = [] const reversed = values.reverse(); console.log(reversed);

顛倒從對象中提取鍵的順序有點煩人,因為您必須將它們全部取出,然后按照您想要的順序將它們全部放回原處:

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

這段代碼通過改變對象來工作,從而最終維護從其他對象到這個有效對象的引用; 如果對象不是默認對象,則更改對象對於維護對象的正確原型也很重要。 如果你想克隆它,你應該小心復制相同的原型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM