Javascript 从JSON创建包含字符串和整数的数组
目前,我有以下JSON提要:Javascript 从JSON创建包含字符串和整数的数组,javascript,json,Javascript,Json,目前,我有以下JSON提要: var data = { "feeds": { "regions": [{ "name": "Lichtenberg", "id": "01408.b", "suburbs": [{ "name": "Fennpfuhl", "views": 76400 }, { "name": "Lichten
var data = {
"feeds": {
"regions": [{
"name": "Lichtenberg",
"id": "01408.b",
"suburbs": [{
"name": "Fennpfuhl",
"views": 76400
},
{
"name": "Lichtenberg",
"views": 87895
},
{
"name": "Rummelsberg",
"views": 10239
}
]
},
{
"name": "Mitte",
"id": "03442.f",
"suburbs": [{
"name": "Tiergarten",
"views": 82695
},
{
"name": "Mitte",
"views": 67234
},
{
"name": "Hansaviertel",
"views": 10848
},
{
"name": "Moabit",
"views": 67500
}
]
},
{
"name": "Friedrichshain-Kreuzberg",
"id": "01991.o",
"suburbs": [{
"name": "Friedrichshain",
"views": "98494"
},
{
"name": "Kreuzberg",
"views": "27800"
}
]
},
{
"name": "Templehof-Schöneberg",
"id": "01778.k",
"suburbs": [{
"name": "Friedenau",
"views": 76595
},
{
"name": "Schöneberg",
"views": 20731
},
{
"name": "Templehof",
"views": 58000
},
{
"name": "Mariendorf",
"views": 32300
}
]
},
{
"name": "Pankow",
"id": "02761.q",
"suburbs": [{
"name": "Wießensee",
"views": 81294
},
{
"name": "Prenzlauer Berg",
"views": 76470
},
{
"name": "Pankow",
"views": 90210
}
]
}
],
}
};
实际上,我想做两件事:
var viewsPerRegion =
[{
label: "Litchtenberg",
total: 174534
}, {
label: "Mitte",
total: 228277
}, {
label: "Friedrichshain-Kreuzberg",
total: 126294
}, {
label: "Templehof-Schöneberg",
total: 187626
}];
etc...
我需要注意的是,data.feeds.region[2].subpures.views存储为字符串,因此我需要先将其更改为整数
无论如何,到目前为止,我的解决方案(实际上不起作用)如下:
var viewsPerRegion, i, j, x;
for (i in data.feeds.regions) {
x += data.feeds.regions[i].name;
for (j in data.feeds.regions[i].suburbs.views){
x += data.feeds.regions[i].suburbs.views[j];
}
}
viewsPerRegion = x;
我们当然非常感谢您的任何帮助,这对JSON和javascript来说是个新手 您可以
映射
区域数组,从每个区域中提取名称
,并通过使用reduce
将每个视图相加,获得总数
:
const data={“feed”:{“regions”:[{“name”:“Lichtenberg”,“id”:“01408.b”,“suburbies”:[{“name”:“Fennpfuhl”,“views”:76400},{“name”:“Lichtenberg”,“views”:87895},{“name”:“Rummelsberg”,“views”:10239},{“name”:“Mitte”,“id”:“03442.f”,“suburbiurs”:[{“name”:“tiergan”,“views”:82695},{“name”:“mitt”,“views”:67234},{“name”:“Mitte”,“views”:10848}{“姓名”:“摩比特”、“观点”:“67500”}、{“姓名”:“弗里德里希肖恩·克鲁兹堡”、“身份证”:“01991.o”、“郊区”:[{“姓名”:“弗里德里希肖恩”、“观点”:“98494”}、{“姓名”:“克鲁兹堡”、“观点”:“27800”}、{“姓名”:“坦普尔霍夫·舍内伯格”、“身份证”:“01778.k”、“郊区”:[{“姓名”:“弗里德瑙”、“观点”:76595}、{“姓名”:“舍内伯格”、“观点”:20731}、{“姓名”:“坦普尔霍夫·舍内伯格”、“观点”:“58000”{Mariendorf,“视图”:32300},{“名称”:“Pankow”,“id”:“02761.q”,“郊区”:[{“名称”:“Wießensee”,“视图”:81294},{“名称”:“Prenzlauer Berg”,“视图”:76470},{“名称”:“Pankow”,“视图”:90210},},}
const viewsPerRegion=data.feeds.regions.map({name,subsection})=>({
标签:名称,
总计:郊区.reduce((a,{views})=>a+Number(视图),0)
}));
console.log(viewsPerRegion);
谢谢!这当然有效!!我看到你使用map
和reduce
而不是来进行in
循环。在这种情况下,我的方法是完全错误的吗?数组方法比用于循环功能更强大,问题通常更少。例如,你的用于(i
创建了一个全局i
,与(j
)的一样-但是如果使用数组方法,所有内容都将封装为一个参数(并且您不必多次重复data.feeds.regions[i]
代码字符串)。您在使用它之前也没有声明x
,这将导致一些奇怪的字符串,看起来像未定义的7640087895
等等。