[{'break_time':'09:00'},{'break_time':'09:00'},{'break_time':'09:00'},{'break_time':'10:00' },{'break_time':'10:00'},{'break_time':'15:00'},{'break_time':'09:00'}]如何获得break_time的数量和09的数量:00,10:00和15:00在javascript中?不断收到TypeError:ret3.forEach / filter不是函数
答案 0 :(得分:0)
您可以创建一个对象并为每个匹配项增加计数,并获得一个最终对象,其中key
作为时间值,value
作为该时间的计数:
var arr = [{
'break_time': '09:00'
}, {
'break_time': '09:00'
}, {
'break_time': '09:00'
}, {
'break_time': '10:00'
}, {
'break_time': '10:00'
}, {
'break_time': '15:00'
}, {
'break_time': '09:00'
}];
var obj = {};
arr.forEach((arrObj) => {
if(obj[arrObj.break_time]){
obj[arrObj.break_time]++;
} else {
obj[arrObj.break_time] = 1;
}
});
console.log(obj);
答案 1 :(得分:0)
使用准功能方法,您可以编写
var arr = [{'break_time':'09:00'},{'break_time':'09:00'},{'break_time':'09:00'},{'break_time':'10:00'},{'break_time':'10:00'},{'break_time':'15:00'},{'break_time':'09:00'}]
const breakCount = arr.filter(function(it) { return it.break_time }).length
const countByValue = arr.reduce(function(acc, curr) {
acc[curr.break_time] = (acc[curr.break_time] || 0) + 1
return acc
}, {})
console.log(breakCount)
console.log(countByValue)
编辑
在所有版本的NodeJ或浏览器上,您可以按以下方式重新排列Ankit Agarwal的答案:
var arr = [{'break_time':'09:00'},{'break_time':'09:00'},{'break_time':'09:00'},{'break_time':'10:00'},{'break_time':'10:00'},{'break_time':'15:00'},{'break_time':'09:00'}]
const breakCount = arr.filter(function(it) { return it.break_time }).length
const countByValue = arr.reduce(function(acc, curr) {
acc[curr.break_time] = (acc[curr.break_time] || 0) + 1
return acc
}, {})
console.log(breakCount)
console.log(countByValue)