gpt4 book ai didi

javascript - Dedup 数组并按最频繁出现的顺序对数组进行排序(使用 LoDash)

转载 作者:行者123 更新时间:2023-11-29 19:16:18 24 4
gpt4 key购买 nike

假设我有一个类似这样的数组:

fruit_basket = ['apple', 'orange', 'banana', 'pear', 'banana']

我想制作一个数组fruits,它包含在fruit basket 中找到的水果,并按照最常出现的水果的顺序排序。 (如果有关系,我不关心顺序。)

fruits 的一个有效值是:

['banana', 'orange', 'apple', 'pear'] 

使用 LoDash 实现此目的的最简洁方法是什么?我不关心运行时性能。

最佳答案

首先你要计算出现的次数

var x = _.chain(fruit_basket).countBy(); // {apple: 1, orange: 1, banana: 2, pear: 1}

然后你将它们配对并按出现次数排序,使用reverse首先得到最大的数字

var y = x.toPairs().sortBy(1).reverse(); //[["banana",2],["pear",1],["orange",1],["apple",1]]

然后你只需映射回键,并获取数组形式的值

var arr = y.map(0).value(); // ['banana', 'orange', 'apple', 'pear'] 

所有链接在一起,看起来像

var arr = _.chain(fruit_basket).countBy().toPairs().sortBy(1).reverse().map(0).value();

没有 loDash,像这样的东西就可以了

var fruit_basket = ['apple', 'orange', 'banana', 'pear', 'banana'];

var o = {};
fruit_basket.forEach(function(item) {
item in o ? o[item] += 1 : o[item] = 1;
});
var arr = Object.keys(o).sort(function(a, b) {
return o[a] < o[b];
});

关于javascript - Dedup 数组并按最频繁出现的顺序对数组进行排序(使用 LoDash),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35119427/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com