排序對像數組,同時在最後位置保留幾個對象

咀嚼2001

我在對對像數組進行排序時遇到了一些困難。目前我有一個像排序的數據集

[
   {
      "index":"football",
      "values":0.3,
      "id":"1"
   },
    {
      "index":"Unknown",
      "values":0.5,
      "id":"2"
   },
   {
      "index":"golf",
      "values":0.1,
      "id":"3"
   },
   {
      "index":"cricket",
      "values":0.222,
      "id":"4",
   },
   {
      "index":"Other",
      "values":0.333,
      "id":"5"
   },
   {
      "index":"netball",
      "values":0.753,
      "id":"6",
   },
]

我想要做的是根據他們的價值觀對它進行排序,最高的在上面。為此,我完成了

myDataSet.sort((a, b) => parseFloat(b.values) - parseFloat(a.values));

這似乎有效。但是,這是我正在努力解決的第二部分。無論它按什麼順序排序,我總是需要從底部和未知底部開始的其他第二個。所以上面應該變成這個

[
   {
      "index":"netball",
      "values":0.753,
      "id":"6",
   },
   {
      "index":"football",
      "values":0.3,
      "id":"1"
   },
   {
      "index":"cricket",
      "values":0.222,
      "id":"4",
   },
   {
      "index":"golf",
      "values":0.1,
      "id":"3"
   },
   {
      "index":"Other",
      "values":0.333,
      "id":"5"
   },
   {
      "index":"Unknown",
      "values":0.5,
      "id":"2"
   },
]

我嘗試使用過濾器,這似乎將它們放在底部,但其餘的不再排序

myDataSet.filter((e) => e.index === 'Other')
    .filter((e) => e.index === 'Unknown')
    .sort((a, b) => parseFloat(b.values) - parseFloat(a.values));

如何根據它們的值進行排序,但將其他和未知放在底部?

謝謝

尼娜·舒爾茨

您可以直接使用所需順序的對象和所有其他未知值的默認值對數組進行排序。

然後values直接使用,無需轉換。

const
    data = [{ index: "netball", values: 0.753, id: "6" }, { index: "football", values: 0.3, id: "1" }, { index: "cricket", values: 0.222, id: "4" }, { index: "golf", values: 0.1, id: "3" }, { index: "Other", values: 0.333, id: "5" }, { index: "Unknown", values: 0.5, id: "2" }],
    bottom = { Other: 1, Unknown: 2 };

data.sort((a, b) =>
    (bottom[a.index] || 0) - (bottom[b.index] || 0) ||
    b.values - a.values
);

console.log(data);
.as-console-wrapper { max-height: 100% !important; top: 0; }

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

同時對兩個數組進行排序

按另一個對像數組對對像數組進行排序

從對像數組中的每個對像中刪除對象

將對像數組轉換為一個對象的數組

排序數組,裡面有兩個對象

合併來自基於索引的兩個對像數組的對象

確定一個對像數組是否包含 JavaScript 中另一個數組的任何對象

根據值在另一個字符串數組中的位置對對像數組進行排序

PHP在對像數組中添加對象

將對象轉換為對像數組

Javascript 對像中的對象列表包含最後一個列表中的值

迭代對像數組並在javascript中為每兩個對象拆分為數組

MongooseJS:如何在對像數組中刪除數組中的 1 個對象

如何根據對象的值將對像數組拆分為另一個數組?

如何按多個日期字段對對像數組進行排序?

React js將新對象推送到數組總是替換最後一個對象而不是插入

是的,驗證對像數組中的第一個和最後一個元素

如何對帖子對像數組進行排序?

根據最佳匹配另一個數組對對像數組進行排序

推入多個對像後,數組的 JSON.stringify 返回一個數字

首先按字母順序對對像數組進行排序,然後按數字排序

對 JSON 的最後五個對象求和

如果該對象包含在 javascript 中的對像數組中,如何檢查整個原始對象(不使用任何屬性)?

我如何通過嵌套對像數組創建具有嵌套對像數組的對象

你如何通過一個參數對數組列表中的對象進行排序,然後如果該參數與 Java 中另一個參數的順序相同?

如何在數組中同時存儲對象和整數?

無法將第二個數組對象值添加到 javascript 中的第一個對像數組中

將對像數組轉換為另一個對像數組

過濾複雜對像中的數組數組並返回該對象