Javascript/ES2015,计算出现的次数并存储为数组中的对象
Javascript/ES2015, count the number of occurrences and store as objects within an array
我正在从JSON提要中提取数据,并试图计算每个名称(name_class)发生的次数。
我想以以下格式返回一个对象数组,其中count指名称出现的次数:
myArray = [{name:"John", count: 5}, {name: "Sarah", count: 2}, {name: "Oliver", count: 3}];
到目前为止,我有以下内容,但这并不计算出现的次数,它只是向数组中添加另一个对象;
let namestUi = {
renderNames(names){
var counter2 = [];
let namesFound = names.map((name) => {
let {name_class} = name;
if(counter2.name == name_class){
counter2.count++;
} else { counter2.push({name: name_class, count: 1}); }
});
console.log(counter2);
return namesFound;
}
};
这是在构建对象数组,但不计算出现的次数。
function count(names){
// Count occurrences using a map (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map)
let map = new Map();
for (let name of names) {
map.set(name, (map.get(name) || 0) + 1);
}
// Transform to array of { name, count }
let result = [];
for (let [name, count] of map) {
result.push({name: name, count: count});
}
return result;
}
count(["a", "b", "c", "a", "b", "a"])
// [{"name":"a","count":3},{"name":"b","count":2},{"name":"c","count":1}]
如何使用计数器变量存在一些问题。可以像访问普通对象一样访问属性,但将其定义为数组。而且你的map
回调函数没有返回任何值。
你可以使用这段代码,它使用一个Map
键计数器的名称,然后应用Array.from
转换映射到一个数组的对象,如你所要求的:
let namestUi = {
renderNames(names){
return Array.from(
names.reduce( (counters, {name_class}) =>
counters.set(name_class, (counters.get(name_class) || 0) + 1),
new Map() ),
([name, count]) => ({name, count})
);
}
};
let result = namestUi.renderNames([
{ name_class: "John" },
{ name_class: "John" },
{ name_class: "Frank" },
{ name_class: "John" },
]);
console.log(result);
相关文章:
- Meteor会话变量未存储数组
- 在Javascript的Textbox中存储数组中的值
- 如何保留输入复选框值的存储数组
- 如何在 localStorage 中存储数组
- 如何在打包的 chrome 应用中本地存储数组
- 如何在 html5 的本地存储对象中存储数组
- 需要循环访问 json 数据的本地存储数组中存储的 json 对象
- 在 Javascript 中创建存储数组,并在每次单击时推送元素 ID
- 根据选中的复选框存储数组元素
- 如何存储数组javascript
- 存储数组在Chrome扩展
- 什么是最有效的方式来存储数组从PHP到JS/jQuery,这样它是可重用的
- Javascript存储数组值
- 存储数组到Cookie Jquery
- Ruby在遍历函数时尝试存储数组元素
- 如何从mongodb的形式存储数组
- 如何在html中打印存储在本地存储数组中的值
- 使用Firebase存储数组
- 获取字符串格式的MySQL存储数组并转换为JSON对象的数组
- 在html attr中存储数组值的最佳实践