按另一個對像數組對對像數組進行排序

沙漠

我有兩個長度相同的對像數組。

one= 
[
    { id: 3, name: 'a'}, 
    { id: 5, name: 'b'},
    { id: 4, name: 'c'}
];

two= 
[
    { id: 7, name: 'b'}, 
    { id: 6, name: 'c'},
    { id: 2, name: 'a'}
];

我想按取決於數組“一”的名稱屬性對數組“二”進行排序。

我的解決方案是

const tempArray = [];
one.forEach((x) => {
   tempArray.push(two.find(item => item.name === x.name));

但是有沒有辦法在不創建 tempArray 的情況下做到這一點?

我的意思是單行解決方案?

萊西亞克

你可以使用map功能:

const tempArray = one.map(x => two.find(item => item.name === x.name));

或者,如果您不力求簡潔:

const nameToPosMap = Object.fromEntries(one.map((x, idx) => [x.name, idx]));
two.sort((i1, i2) => nameToPosMap[i1.name] - nameToPosMap[i2.name])

這可能會更快,因為它避免了重複find調用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在javascript中按字母順序對對像數組進行排序

確定一個對像數組是否包含 JavaScript 中另一個數組的任何對象

對數組內對像中的字符串進行排序

在嵌套對像數組中按屬性值對對像數組進行排序

使用另一個數組更新對像數組

將對像數組轉換為另一個對像數組

將對像數組轉換為一個對象的數組

如何按 id 和 name 對對像數組進行排序?

是否可以總結對像數組的屬性並根據另一個屬性對其進行過濾?

使用 VueJS 對對像數組中的標題進行排序

如何根據屬性對對像數組進行排序

如何對帖子對像數組進行排序?

根據最佳匹配另一個數組對對像數組進行排序

Redux 在 React 的另一個數組中添加了對像數組

如何根據對象的值將對像數組拆分為另一個數組?

如何對對像數組進行分組和計數

如何檢查包含另一個對像數組的對像數組是否具有屬性

按降序對數組的數字進行排序

首先按字母順序對對像數組進行排序,然後按數字排序

按比率和字母順序對對像數組進行排序

使用月對兩個對像數組進行聚類

對具有最大特定鍵值總數的對像數組進行排序

如何根據基於不同數組的具有 2 個屬性的對像對數組進行排序

如何在按另一個鍵排序之前按鍵對 PHP 數組進行分組?

對像數組到另一個數組匯總

根據值在另一個字符串數組中的位置對對像數組進行排序

如何按多個日期字段對對像數組進行排序?

像計算機上的文件名一樣按鍵對關聯數組進行排序

如何按某些屬性值對對像數組進行分組