簡體   English   中英

基於javascript中的另一個數組對數組對象進行排序

[英]Sort array object based on another array in javascript

我如何對看起來像這樣的數組進行排序和重新排列

fields = [
  {
    uid: '2c2162cc-37d0-f1e3-96c2-6d9ccb50f38d',
    field: new ObjectId("627f816d8443318c6aaa1220"
  },
  {
    uid: '2aa60f96-135b-e179-2b46-516c87a877cc',
    field: new ObjectId("6283cb3ca573a56e11587c46"),
  }
]

匹配這個數組的排列:

order = [ '6283cb3ca573a56e11587c46', '627f816d8443318c6aaa1220' ]

這是我正在尋找的輸出:

[
{
    uid: '2aa60f96-135b-e179-2b46-516c87a877cc',
    field: new ObjectId("6283cb3ca573a56e11587c46"),
  },
  {
    uid: '2c2162cc-37d0-f1e3-96c2-6d9ccb50f38d',
    field: new ObjectId("627f816d8443318c6aaa1220"),
  }
]

findIndex 和排序,但我很困惑

fields.sort((a: any, b: any) => order.indexOf(a.field) - order.indexOf(b.field)) // It does not work

您需要對數組使用sort方法。 然后比較訂單數組上的field索引。

 const data = [ { uid: '2aa60f96-135b-e179-2b46-516c87a877cc', field: "6283cb3ca573a56e11587c46", value: 'test val 6' }, { uid: '2c2162cc-37d0-f1e3-96c2-6d9ccb50f38d', field: "627f816d8443318c6aaa1220", value: '' } ] const order = [ '6283cb3ca573a56e11587c46', '627f816d8443318c6aaa1220' ]; data.sort((a,b) => order.indexOf(a.field) - order.indexOf(b.field)); console.log(data);

注意:這里沒有定義ObjectId類,所以為了簡單起見,我在這里將其更改為字符串。

暫無
暫無

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

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