gpt4 book ai didi

javascript - 从Javascript中的数组中选择前m个最重复的元素

转载 作者:行者123 更新时间:2023-11-30 12:31:07 25 4
gpt4 key购买 nike

假设我有一个包含 n 元素的数组,其中一些元素可能出现不止一次。

我想选择该数组中最常出现的前 m 个元素。

有人可以帮我吗?

例如,假设数组是[1, 3, 2, 3, 5, 2, 2, 3, 6, 8, 9]n=11 元素。如果我想选择其中最前面的 m=2,那将是 23

执行此操作的最佳脚本是什么?

最佳答案

您可以创建一个临时对象来保存像 key: count 这样的事件。然后使用 Object.keys 返回的数组对对象值进行排序。然后以 .reverse() 顺序切片最后的“n”元素。

这是一个示例实用程序函数,用于获取 topnmax 次出现。 注意:正如@n6 在上面的评论中所述,这忽略了关系。

演示 fiddle :https://jsfiddle.net/abhitalks/s43k6vsq/

片段:

var data1 = [1, 3, 2, 3, 5, 2, 2, 3, 6, 8, 9], 
data2 = [4, 4, 4, 2, 2, 1, 5, 5, 8, 8, 8, 8, 3],
data3 = [3, 23, 23, 45, 54, 54, 54];

// Function parameters = Data Array and top "n" elements to find
function getMax(data, n) {
var tmp = {}, tops = [];

// Create object with count of occurances of each array element
data.forEach(function(item) {
tmp[item] = tmp[item] ? tmp[item]+1 : 1;
});

// Create an array of the sorted object properties
tops = Object.keys(tmp).sort(function(a, b) { return tmp[a] - tmp[b] });

// Return last n elements in reverse order
return tops.slice(-(n)).reverse();
}

// Test with sample data and top "n"
console.log(getMax(data1, 2));
console.log(getMax(data2, 3));
console.log(getMax(data3, 1));

关于javascript - 从Javascript中的数组中选择前m个最重复的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27667436/

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