[英]Sort array of objects based on another array of objects key
我有 2 個 arrays 對象
array1 = [
{
"name": "B",
"order": 1
},
{
"name": "C",
"order": 2
},
{
"name": "D",
"order": 3
},
{
"name": "B",
"order": 4
},
{
"name": "A",
"order": 5
}
]
array2 = [
{
"name": "B",
"order": 1,
"id": 3638
},
{
"name": "B",
"order": 1,
"id": 3661
},
{
"name": "C",
"order": 2,
"id": 3658
},
{
"name": "D",
"order": 3,
"id": 3659
},
{
"name": "A",
"order": 5,
"id": 3636
}
]
我需要根據屬性名稱對 array2 進行排序以匹配 array1 的相同順序。 在array2 中有2 個與值B 相等的名稱屬性。這些名稱B 在一起,但我需要數組與array1 的順序完全相同。 在 array1 中,第一個 B 位於索引 0 處,第二個 B 位於索引 3 處。
我沒有運氣就做了這個嘗試。
array2.sort((a, b) => array1.indexOf(a.name) - array1.indexOf(b.name));
let sorted = array2.sort((a, b) => {
return array1.findIndex(p => p.name=== a.name) - array1.findIndex(p => p.name=== b.name);
});
你可以試試這個,它會在array2
中找到與名稱匹配的第一個元素,按順序從array1
.. 將其從array2
中刪除,然后將其添加到sortedArray2
。
const array1 = [ { "name": "B", "order": 1 }, { "name": "C", "order": 2 }, { "name": "D", "order": 3 }, { "name": "B", "order": 4 }, { "name": "A", "order": 5 } ] const array2 = [ { "name": "B", "order": 1, "id": 3638 }, { "name": "B", "order": 1, "id": 3661 }, { "name": "C", "order": 2, "id": 3658 }, { "name": "D", "order": 3, "id": 3659 }, { "name": "A", "order": 5, "id": 3636 } ] const sortedArray2 = [] for(const item of array1) { sortedArray2.push( array2.splice( array2.findIndex(elem => elem.name === item.name), 1 ) ) } console.log(sortedArray2)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.