const orderMap = ['third', 'second', 'first'];
const array = [{name: 'first'}, {name: 'second'}, {name: 'third'}];
let sorted = orderMap.map(function(sortBy){
return this.find(function(toSort){return toSort.name === sortBy})
}, array)
console.log(sorted);
上面的例子作業正常,當嘗試交換陣列元素位置時。同樣的事情怎么可能呢,基于 API 回應。使用“名稱”如何進行
根據下面提供的 api 回應螢屏截圖,我想更改(第 7 個位置到第 2 個位置)(第 21 個位置到第 3 個位置)謝謝
uj5u.com熱心網友回復:
使用sortjavascript 方法。由于是一個物件,因此您不會直接對值進行排序。在groups方法內部,使用您的sorted變數。這將使用“名稱”作為按字母順序排列的排序鍵對陣列進行排序。
sorted.sort((a, b) => {
return a.name.toLocaleLowerCase().localeCompare(b.name.toLowerCase());
})
return sorted
uj5u.com熱心網友回復:
這個問題的解決方案是首先對陣列進行分組,然后使用它flat()來展平/恢復它,使其具有相同的級別:
const orderMap = ['third', 'second', 'first'];
const array = [{name: 'first'}, {name: 'second'}, {name: 'third'}, {name: 'second'}];
const sorted = orderMap.reduce((prev, curr, index) => {
prev[index] = array.filter(item => item.name === curr)
return prev
}, []).flat()
console.log(sorted)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/346173.html
標籤:javascript Vue.js 公理
