gpt4 book ai didi

javascript - 按 Javascript 数组中的出现次数(计数)排序

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:08:06 25 4
gpt4 key购买 nike

我是 Jquery 和 Javascript 的新手。有人可以帮我根据数组中的出现次数(计数)进行 Jquery 排序吗?我尝试了各种排序方法,但都没有用。

我有一个 Javascript 数组

allTypesArray = ["4", "4","2", "2", "2", "6", "2", "6", "6"]

// here 2 is printed four times, 6 is printed thrice, and 4 is printed twice

我需要这样的输出

newTypesArray = ["2","6","4"]

我试过了

function array_count_values(e) {
var t = {}, n = "",
r = "";
var i = function (e) {
var t = typeof e;
t = t.toLowerCase();
if (t === "object") {
t = "array"
}
return t
};
var s = function (e) {
switch (typeof e) {
case "number":
if (Math.floor(e) !== e) {
return
};
case "string":
if (e in this && this.hasOwnProperty(e)) {
++this[e]
} else {
this[e] = 1
}
}
};
r = i(e);
if (r === "array") {
for (n in e) {
if (e.hasOwnProperty(n)) {
s.call(t, e[n])
}
}
}
return t
}
6: 3
}

输出是{4:2, 2:6, 6:3}

最佳答案

我不认为有一个直接的一步解决方案,当然它不仅仅是一种排序(一种排序不会删除元素)。一种方法是构建对象的中间映射来存储计数:

var allTypesArray = ["4", "4","2", "2", "2", "6", "2", "6", "6"];
var s = allTypesArray.reduce(function(m,v){
m[v] = (m[v]||0)+1; return m;
}, {}); // builds {2: 4, 4: 2, 6: 3}
var a = [];
for (k in s) a.push({k:k,n:s[k]});
// now we have [{"k":"2","n":4},{"k":"4","n":2},{"k":"6","n":3}]
a.sort(function(a,b){ return b.n-a.n });
a = a.map(function(a) { return a.k });

请注意,您在这里不需要 jQuery。当您不操作 DOM 时,您很少需要它。

关于javascript - 按 Javascript 数组中的出现次数(计数)排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22010520/

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