Lodash sortby 先条件再检查其他条件
Lodash sortby first condition and then check for other conditions
我正在使用 lodash 在函数中按值排序。目前正在按值排序。不过,我想补充一个条件。我想让它首先按这个条件排序(意味着一个文件将等于某物),然后它会按值进行排序。
也就是说,有一项的名称是'Sally'。此项应排在第一位,然后其余项按值排序。
我对此做了很多研究,但在网上找不到任何东西。想知道是否有人遇到过这个问题。请看我的代码:
const sortByNameThenValue = () => {
let result;
result = sortBy(name, 'Sally') && sortBy(allowance, 'value').reverse();
}
我也在考虑链接它,但似乎效果不佳。如果你看到了什么,请告诉我。谢谢并感谢!
你没有提供任何样本数据,所以我只是做了一些东西。不需要包含 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)));
您可以在 lodash 中执行此操作:
const sorted = _.sortBy(
people,
[(person) => person.name !== 'Sally', (person) => person.value]
);
sortBy
接受一个元素数组和一个函数数组,并且“[sort] in ascending order by the results of running each element in a collection thru each iteratee”
这里还有一个sandbox演示
倒序排序:
const sorted = _.sortBy(people, [
(person) => person.name === "Sally",
(person) => person.value
]).reverse();
我正在使用 lodash 在函数中按值排序。目前正在按值排序。不过,我想补充一个条件。我想让它首先按这个条件排序(意味着一个文件将等于某物),然后它会按值进行排序。
也就是说,有一项的名称是'Sally'。此项应排在第一位,然后其余项按值排序。
我对此做了很多研究,但在网上找不到任何东西。想知道是否有人遇到过这个问题。请看我的代码:
const sortByNameThenValue = () => {
let result;
result = sortBy(name, 'Sally') && sortBy(allowance, 'value').reverse();
}
我也在考虑链接它,但似乎效果不佳。如果你看到了什么,请告诉我。谢谢并感谢!
你没有提供任何样本数据,所以我只是做了一些东西。不需要包含 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)));
您可以在 lodash 中执行此操作:
const sorted = _.sortBy(
people,
[(person) => person.name !== 'Sally', (person) => person.value]
);
sortBy
接受一个元素数组和一个函数数组,并且“[sort] in ascending order by the results of running each element in a collection thru each iteratee”
这里还有一个sandbox演示
倒序排序:
const sorted = _.sortBy(people, [
(person) => person.name === "Sally",
(person) => person.value
]).reverse();