TypeScript对嵌套对象的数组进行排序

3df52oht  于 2023-05-23  发布在  TypeScript
关注(0)|答案(1)|浏览(117)

我正在学习TypeScript,并努力解决问题。我有数据。

data: [
{ 
    id: 123, name: Toyota,
    detail: [
            {id: 15, desc: 'K1', value: 7 },
            {id: 16, desc: 'B5', value: 4 },
    ] 
},
{ 
    id: 127, name: Cammry,
    detail: [
            {id: 17, desc: 'K1', value: 9 },
            {id: 11, desc: 'B5', value: 3 },
    ] 
},
{ 
    id: 177, name: Honda,
    detail: [
            {id: 12, desc: 'K1', value: 8 },
            {id: 13, desc: 'B5', value: 3 },
    ] 
}]

我有一个函数,用“值”和“desc”排序

public Sort_Item(desc, type) { 
if (type === 0){
    // sort order ascending     
}
else{
    // sort order descending
}}

我想要排序值与“desc”和顺序类型升序或降序。EX:this.Sort_Item(“K1”,0)// param 'K1'并升序排序,结果为

谢谢大家!

hwamh0ep

hwamh0ep1#

我不是百分百能理解,但我猜,你希望能够根据每个项目的一个细节的价值来排序。例如K1或B5。

function sortItem(list, key, direction) {
  const copyList = [...list];

  copyList.sort((a, b) => {

    const aValue = a.detail.find(item => item.desc === key).value;
    const bValue = b.detail.find(item => item.desc === key).value;
    if (direction === 'asc') {
      return aValue - bValue
    } else {
      return bValue - aValue
    }
  })
  return copyList;
}



const data = [{
    id: 123,
    name: 'Toyota',
    detail: [{
        id: 15,
        desc: 'K1',
        value: 7
      },
      {
        id: 16,
        desc: 'B5',
        value: 4
      },
    ]
  },
  {
    id: 127,
    name: 'Cammry',
    detail: [{
        id: 17,
        desc: 'K1',
        value: 9
      },
      {
        id: 11,
        desc: 'B5',
        value: 3
      },
    ]
  },
  {
    id: 177,
    name: 'Honda',
    detail: [{
        id: 12,
        desc: 'K1',
        value: 8
      },
      {
        id: 13,
        desc: 'B5',
        value: 3
      },
    ]
  }
]

console.log(sortItem(data, 'K1', 'asc'))

相关问题