我有一个像这样的对象数组:
[
{"question":"Q1","answer":"my answer 2"},
{"question":"Q1","answer":"my answer"}
{"question":"Q1","answer":"my answer"}
{"question":"Q2","answer":"answer 2"}
]
Run Code Online (Sandbox Code Playgroud)
我想按问题键分组并返回每个答案的计数。
例如
{
"Q1": [{
"answer": "my answer",
"count": 2
}, {
"answer": "my answer 2",
"count": 1
}],
"Q2": [{
"answer": "answer 2",
"count": 1
}]
}
Run Code Online (Sandbox Code Playgroud)
,
我可以groupBy使用以下方法提问:
.groupBy("question")并使用以下方法计算值的出现次数.countBy(),但我不确定如何结合分组和计数功能来实现所需的输出?
您可以从 - 开始_.groupBy(array, 'question'),然后使用.map
例如:
var arr = [
{"question":"Q1","answer":"my answer 2"},
{"question":"Q1","answer":"my answer"},
{"question":"Q1","answer":"my answer"},
{"question":"Q2","answer":"answer 2"}
];
var result = _(arr)
.groupBy('question')
.map(function(item, itemId) {
var obj = {};
obj[itemId] = _.countBy(item, 'answer')
return obj
}).value();
console.log(JSON.stringify(result, null, 2));
Run Code Online (Sandbox Code Playgroud)
请参阅工作版本:http://jsbin.com/wixoronoqi/edit ?js,console