我正在使用 lodash 在函式中按值排序。目前正在按價值排序。但是,我想添加另一個條件。我想讓它首先按此條件排序(意味著一個欄位將等于某個值),然后它會按值排序。
換句話說,有一項名為“Sally”的專案。這個專案應該是第一個,然后其余的專案按值排序。
我對此進行了很多研究,但在網上找不到任何東西。想知道是否有人遇到過這個問題。請看我的代碼:
const sortByNameThenValue = () => {
let result;
result = sortBy(name, 'Sally') && sortBy(allowance, 'value').reverse();
}
我也在考慮鏈接它,但似乎也不起作用。如果你看到了什么,請告訴我。謝謝并感激!
uj5u.com熱心網友回復:
您可以在 lodash 中執行此操作:
const sorted = _.sortBy(
people,
[(person) => person.name !== 'Sally', (person) => person.value]
);
sortBy接受一個元素陣列和一個函式陣列,并且“[sort]按通過每個 iteratee 運行集合中每個元素的結果升序排列”
這里也是一個用于演示的沙箱
逆序排序:
const sorted = _.sortBy(people, [
(person) => person.name === "Sally",
(person) => person.value
]).reverse();
uj5u.com熱心網友回復:
你沒有提供任何樣本資料,所以我只是編造了一些東西。不需要包含 lowdash 庫,因為在 Vanilla-JS 中已經可以進行排序。
const arr=[{name:"Fred",value:138},{name:"Harry",value:5},{name:"Sally",value:34},{name:"Andy",value:257},{name:"Sue",value:142},{name:"Peggy",value:33},{name:"Frank",value:85}];
function val(o){
return o.value (o.name==="Sally"?1e50:0)
}
console.log(arr.sort((a,b)=>
val(b)-val(a)));
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/410585.html
標籤:
