[英]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.