Lodash先按条件排序,然后检查其他条件



我使用lodash在函数中按值排序。目前它正在按值排序。不过,我想补充一个条件。我想让它先按这个条件排序(意味着一个文件等于某个值(,然后按值排序。

换句话说,有一件商品的名字叫"莎莉"。这个项目应该是第一个,然后其余的项目按值排序。

我对此做了很多研究,但在网上找不到任何东西。想知道是否有人遇到过这个问题。请查看我的代码:

const sortByNameThenValue = () => {
let result;

result = sortBy(name, 'Sally') && sortBy(allowance, 'value').reverse();
}

我也想过把它链接起来,但似乎没有那么好用。如果你看到什么,请告诉我。谢谢并感谢!

您可以在lodash:中执行此操作

const sorted = _.sortBy(
people, 
[(person) => person.name !== 'Sally', (person) => person.value]
);

CCD_ 1取元素阵列和函数阵列;按照通过每个迭代运行集合中的每个元素的结果升序[排序];

这里还有一个用于演示的沙盒

按相反顺序排序:

const sorted = _.sortBy(people, [
(person) => person.name === "Sally",
(person) => person.value
]).reverse();

您没有提供任何样本数据,所以我只是编了一些东西。没有必要包含lowdash库,因为排序在VanillaJS中已经可用。

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)));

最新更新