4 回答
TA贡献1876条经验 获得超7个赞
如果已知需要处理的值的话
var arrStr=JSON.stringify([
{name: "fcf294131", key: "处理进度", value: "等待处理"},
{name: "fcf294131", key: "处理进度", value: "正在处理"},
{name: "fcf294131", key: "处理进度", value: "等待处理"},
{name: "fcf294131", key: "处理进度", value: "完成"},
{name: "fcf294131", key: "处理进度", value: "等待处理"}
])
res=[
{key: "等待处理", len: arrStr.split("等待处理").length-1},
{key: "正在处理", len: arrStr.split("正在处理").length-1},
{key: "完成", len: arrStr.split("完成").length-1}
]
当然没有考虑性能,只是取巧简洁一点hhhh
TA贡献1752条经验 获得超4个赞
let arr = [], // 初始数据集
res = {}; // 结果
arr.forEach(item => {
if(!res[item.value]) {
res[item.value] = {
key: item.value,
len: 1
}
} else {
res[item.value].len++;
}
})
res = Object.values(res);
TA贡献1817条经验 获得超14个赞
写了一个简单易懂的:
function countValue (arr) {
var does = {
key: '等待处理',
len: 0
};
var doing = {
key: '正在处理',
len: 0
};
var done = {
key: '已处理',
len: 0
};
var newArr = [];
for(var i =0;i <arr.length; i++) {
switch(arr[i].value) {
case '等待处理': does.len++;break;
case '正在处理': doing.len++;break;
case '已处理': done.len++;break;
}
}
newArr.push(does);
newArr.push(doing);
newArr.push(done);
return newArr
}
结果如图:
添加回答
举报