我有一個陣列或物件,它將作為具有唯一鍵的表的列
const list = [{
key: "Name",
textColor: "red"
},{
key: "Age",
textColor: "green"
},{
key: "Occupation",
textColor: "yellow"
}]
而且,我有一個表中列的排序串列
const newOrder = ["Occupation", "Name", "Age"]
現在,我如何在不使用的情況下根據 newOrder 重新排列串列nested loops。而且,這些都是動態的,所以不僅僅是上面提到的三列
預期產出
const list = [{
key: "Occupation",
textColor: "yellow"
},{
key: "Name",
textColor: "red"
},{
key: "Age",
textColor: "green"
}]
uj5u.com熱心網友回復:
您的串列可以重新格式化為常規 javascript 物件,其中key是屬性名稱,并且textColor是值:
const toObject = kvps => Object.fromEntries(kvps.map(kvp => [ kvp.key, kvp.textColor ]));
使用給定的鍵陣列,您可以從該物件中選擇值,如下所示:
const fromObject = (order, obj) => order.map(key => ({ key, textColor: obj[key] }));
將兩者鏈接在一起,您可以重新排序任何鍵值對串列:
const list = [{
key: "Name",
textColor: "red"
},{
key: "Age",
textColor: "green"
},{
key: "Occupation",
textColor: "yellow"
}]
const toObject = kvps => Object.fromEntries(kvps.map(kvp => [ kvp.key, kvp.textColor ]));
const fromObject = (order, obj) => order.map(key => ({ key, textColor: obj[key] }));
const reorder = (order, kvps) => fromObject(order, toObject(kvps));
const newList = reorder(["Occupation", "Name", "Age"], list);
console.log(
newList
)
uj5u.com熱心網友回復:
您可以迭代“訂單”串列,在原始串列中找到相應的專案,然后按該順序將專案推送到新串列:
const orderList = (list, order) => {
const newList = [];
for (key of order) {
const item = list.find((obj) => obj.key == key);
if (item) newList.push(item);
}
return newList;
}
uj5u.com熱心網友回復:
您可以使用lodash 庫中的orderBy
uj5u.com熱心網友回復:
呼叫排序時有自己的比較函式
list.sort((a, b) => {
const newOrder = ["Occupation", "Name", "Age"]
return newOrder.findIndex(a) - newOrder.findIndex(b)
} )
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/444933.html
標籤:javascript 节点.js 数组
上一篇:我可以使用已部署的URL訪問Django管理站點嗎?
下一篇:如何將行添加到numpy陣列
