我有兩個長度相同的對像數組。
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] 删除。
我来说两句