如何解决Js Array 定义重复对象的数量
我知道之前已经回答过这个问题,但我不能让他们中的任何一个为此工作:
我有 10,000 多个结果且无法更改源 .csv 文件,并且必须是纯 js。
问题是:
我正在尝试提取每个答案的数量,其中有 3 个。 例如'{Q17_Communication: "2"}' 在 10,000+ 的列表中显示了多少次?
格式如下...
0: Object {Q17_Communication: "Has your organization communicated a vision or plan for post-pandemic\nwork?"}
1: Object {Q17_Communication: ""}
2: Object {Q17_Communication: ""}
3: Object {Q17_Communication: "{\"ImportId\":\"QID43\"}"}
4: Object {Q17_Communication: "1"}
5: Object {Q17_Communication: "2"}
6: Object {Q17_Communication: "3"}
7: Object {Q17_Communication: "1"}
8: Object {Q17_Communication: "1"}
9: Object {Q17_Communication: "2"}
10: Object {Q17_Communication: "2"}
11: Object {Q17_Communication: "1"}
12: Object {Q17_Communication: "1"}
13: Object {Q17_Communication: "3"}
14: Object {Q17_Communication: "1"}
15: Object {Q17_Communication: "3"}
16: Object {Q17_Communication: "3"}
17: Object {Q17_Communication: "2"}
18: Object {Q17_Communication: "1"}
...
]
解决方法
这样的事情可以工作:
const objects = [
{Q17_Communication: "1"},{Q17_Communication: "2"},{Q17_Communication: "3"},];
const counts = {};
objects.forEach((value) => {
if (!counts[value.Q17_Communication]) {
counts[value.Q17_Communication] = 0;
}
counts[value.Q17_Communication]++;
});
console.log(counts);
function count(obj) { //obj is your array
let answerCount = [0,0];
for (let i = 0; i < obj.length; i++) {
answerCount[parseInt(obj[i]['Q17_Communication'])]++;
}
return answerCount;
}
将你的数组放入函数中,并返回另一个数组(answerCount),其中包含每个答案出现的次数,只需像这样调用函数
let myCount = count(myarray); //put your array
console.log("Number of '1' : " + myCount[1]);
console.log("Number of '2' : " + myCount[2]);
console.log("Number of '3' : " + myCount[3]);
,
使用 array.reduce()
方法可以轻松实现您想要的。
见 =>
数组
let array = [{
Q17_Communication: "Has your organization communicated a vision or plan for post-pandemic\nwork?"
},{
Q17_Communication: ""
},{
Q17_Communication: "{\"ImportId\":\"QID43\"}"
},{
Q17_Communication: "1"
},{
Q17_Communication: "2"
},{
Q17_Communication: "3"
},{
Q17_Communication: "1"
}];
使用常量
const count = array.reduce((total,object)=>{
// condition
object.Q17_Communication === "2" ? total += 1 : null;
return total;
},0);
console.log(count)
使用函数
function countIt(value){
const count = array.reduce((total,object)=>{
object.Q17_Communication === value ? total += 1 : null;
return total;
},0);
return count;
}
console.log(countIt("2"))
最好使用数组方法而不是使用传统的 for 循环..
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。