我认为一步中没有直接的解决方案,当然它不仅仅是一种排序(排序不会删除元素)。实现此目的的一种方法是构建对象的中间映射来存储计数:
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 时,您很少需要它。