簡體   English   中英

如何使用排序 function 按名稱對對象的元素進行排序並提取值?

[英]How can I use the sort function to sort the object's elements in order by name and extract the values?

我有一個名為inje的對象數組。 我想根據injename屬性的最后一個數字按數字順序輸入答案。

當我使用sort()時,順序不會改變。 如何修復我的代碼?

const inje = [
  { name: "farm3", },
  { name: "farm1", },
  { name: "farm2", },
]

const answer = inje.sort(); // doesn't work.

預期 output:

[
  { name: "farm1", },
  { name: "farm2", },
  { name: "farm3", },
]

要執行您需要的操作,您需要提供自己的 function 到sort() ,它接受數組中的兩個對象並比較它們。 在進行比較之前,您可以使用正則表達式提取name字符串末尾的數字。 嘗試這個:

 const inje = [ { name: "farm3" }, { name: "farm1" }, { name: "farm2" } ] const output = inje.sort((a, b) => { let aNum = +a.name.match(/\d+$/)[0]; let bNum = +b.name.match(/\d+$/)[0]; return aNum > bNum? 1: -1; }); console.log(output);

這里有幾點需要注意。 首先,此代碼假定值的末尾總是有一個數字。 如果不是這種情況,您需要添加一些保護條款來處理它。

此外,請注意不要在不需要的對象中添加尾隨逗號。 檢查您的原始inje object 和上面的示例之間的區別,了解我的意思。

暫無
暫無

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

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