我有一个数组中的项目列表,我想创建一个新数组,它是一个对象数组,键是现有数组中的值,值是该项目在现有数组中的次数大批。希望从那时起,如果不是希望这个例子能有所帮助。请不要使用 lodash 或 underscore 等第三方库。
任何帮助将不胜感激,谢谢。
var arr = [a,a,a,b,c,c,d,e,f,f,f,f];
new array =[{a:3},{b:1},{c:2},{d:1},{e:1},{f:4}];
到目前为止我的尝试:
countryCodes.sort();
var result = count(countryCodes);
console.log(result[0]+": "+result[1]);
function count(arr) {
var a = [], b = [], prev;
arr.sort();
for ( var i = 0; i < arr.length; i++ ) {
if ( arr[i] !== prev ) {
a.push(arr[i]);
b.push(1);
} else {
b[b.length-1]++;
}
prev = arr[i];
}
return [a, b];
}
最佳答案
你已经很接近了。
var a = "aa",
b = "bb",
c = "cc",
d = "dd",
e = "ee",
f = "ff";
var arr = [a,a,a,b,c,c,d,e,f,f,f,f];
function getCount(arr) {
var result = {};
for (var val of arr) result[val] = result[val] + 1 || 1;
return result;
}
var totals = getCount(arr);
document.write(JSON.stringify(totals));
关于javascript - 使用 javascript/jquery 从现有数组创建一个新数组,该数组保存某个项目存在的次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36985704/