簡體   English   中英

對對象數組進行排序,並從對象返回特定值的數組

[英]Sort array of objects and return array of specific values from the object

我有一個對象數組(產品列表),我正在實現它的排序邏輯。 為了使它成為單一的事實來源,我制作了一個id-product地圖,看起來像這樣:

const prodsMap = {
  1 : {
    id : 1,
    name : 'abc',
    price : 4
  },
  2 : {
    id : 2,
    name : 'aac',
    price : 3
  }
}

現在為了對我正在做的產品進行排序:

function sortString(data, propName) {
  return data.sort((obj1, obj2) => {
    const val1 = obj1[propName]
    const val2 = obj2[propName]

    if (val1 < val2) {
      return -1
    }

    if (val1 > val2) {
      return 1
    }

    return 0
  })
}

調用這樣的函數:

const prods = sortString(Object.values(prodsMap), 'name')

這里的一切都運行正常,排序的結果將是一個對象數組,為了得到id我正在使用map函數。

現在問題是我要迭代三次(第一次獲取對象值,第二次是排序,第三次是映射id),我想知道在數組排序時是否有更好的方法來獲取ID。

你可以訂購移交對象的密鑰,以獲得一個id數組。

如果你需要的ìd對象的屬性,您可以在外部對象的值與映射id屬性。

 const prodsMap = { 1 : { id : 1, name : 'abc', price : 4 }, 2 : { id : 2, name : 'aac', price : 3 } } function sortString(data, propName) { return Object.keys(data).sort((a, b) => { const val1 = data[a][propName]; const val2 = data[b][propName]; if (val1 < val2) { return -1; } if (val1 > val2) { return 1; } return 0; }); } const prods = sortString(prodsMap, 'name'); console.log(prods); 

暫無
暫無

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

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