如何使用object的name字段值统计JavaScript中其他字段的数据
我的数据对象是如何使用object的name字段值统计JavaScript中其他字段的数据,javascript,arrays,json,object,Javascript,Arrays,Json,Object,我的数据对象是 var obj=[{"Town":"Newton","PropertyType":"Multi Family","InvestmentType":"Homeownership","Perks":"Retail Store"}, {"Town":"South Surrey",&qu
var obj=[{"Town":"Newton","PropertyType":"Multi Family","InvestmentType":"Homeownership","Perks":"Retail Store"},
{"Town":"South Surrey","PropertyType":"Multi Family","InvestmentType":"Investment Property","Perks":"Retail Store"},
{"Town":"South Surrey","PropertyType":"Multi Family","InvestmentType":"Investment Property","Perks":"Bus Station"},
{"Town":"South Surrey","PropertyType":"Condo","InvestmentType":"Homeownership","Perks":"Retail Store"}];
我想计算每个城镇的福利
所需成果:
{name:"South Surrey", data:[2,1]}
//As in south surrey the perks retail store counts to 2, 1 is for bus station.
What I have tried..
var Newtonstats=[];//keeps the count
var eachRec=[];//handles each rec.
obj.forEach(obj=>{
Object.keys(obj).forEach((key)=>{
if(key=="Town")
{
switch(obj.Town)
{
case "Newton":
Object.keys(obj).forEach((secKey)=>{
if(secKey=="Perks")
{
(Newtonstats[obj[secKey]]?
Newtonstats[obj[secKey]]++:
Newtonstats[obj[secKey]]=1);
eachRec[0]={name:"Newton", key: Newtonstats};
}
});
}
}
});
});
console.log(eachRec[0]);
//Outcome.
// name:"Newton" ,key[]: 'Retail Store': 1
此代码的问题在于它是硬编码的。
我想动态地将值放入每个名称类型中
我试过的第二种方法
我试着使用obj.hasOwnProperty
但是我很困惑
var main={};
变量计数={}
对象forEach(函数(o){
}))
函数countPerks(对象)
{
对象。forEach(函数(o){
}))
返回计数
}
控制台日志(主) 您可以使用
reduce
并将津贴计数分配给该津贴。大概是这样的:
var obj=[{“城镇”:“牛顿”,“地产类型”:“多户”,“投资类型”:“房屋所有权”,“津贴”:“零售店”},{“城镇”:“南萨里”,“地产类型”:“多户”,“投资类型”:“投资地产”,“津贴”:“零售店”},{“城镇”:“南萨里”,“地产类型”:“多户”,“投资类型”:“投资地产”,“津贴”:“公共汽车站”},{“城镇”:“南萨里”,“房地产类型”:“公寓”,“投资类型”:“房屋所有权”,“津贴”:“零售店”}];
var result=Object.values(obj.reduce((a,{Town,Perks})=>{
一个[城镇]=一个[城镇]{城镇,福利:{};
a[城镇].perks[perks]=(a[城镇].perks[perks]| | 0)+1;
返回a;
},{}));
控制台日志(结果)代码>你尝试了什么,遇到了什么问题?我编辑了这个问题来回答你。我的意思是,假设我还想计算南萨里的房产类型,如何使其动态化
if (!main.hasOwnProperty(o.Town)) {
main[o.Town] = main[o.Town]+countPerks(obj);
}
// increment the count based on the type
main[o.Town] += countPerks(obj);
if (!counts.hasOwnProperty(o.Perks)) {
counts[o.Perks] = 0;
}
// increment the count based on the type
counts[o.Perks] += 1;