Javascript 如何在一个数组中循环json数据
我有一个来自服务器端的JSON数据,但它不是我想要的。我的json数据有几个循环,我想将它们转换成单个循环 JSON我得到了Javascript 如何在一个数组中循环json数据,javascript,arrays,json,Javascript,Arrays,Json,我有一个来自服务器端的JSON数据,但它不是我想要的。我的json数据有几个循环,我想将它们转换成单个循环 JSON我得到了 [ [ "Year", "2018-9", "2017-9" ], [ "JAYANAGAR", "2018-9", 857 ], [ "MALLESHWARAM", "2018-9", 169 ], [ "KOLAR", "2018-9",
[
[
"Year",
"2018-9",
"2017-9"
],
[
"JAYANAGAR",
"2018-9",
857
],
[
"MALLESHWARAM",
"2018-9",
169
],
[
"KOLAR",
"2018-9",
178
],
[
"JAYANAGAR",
"2017-9",
635
],
[
"MALLESHWARAM",
"2017-9",
56
],
[
"KOLAR",
"2017-9",
90
]
]
这里的门店,即jayanagar malleshwaram和kolar,重复着我的不同日期
我正试图把它转换成这样的东西
[
[
"Year",
"2018-9",
"2017-9"
],
[
"Jayanagar",
857,
635
],
[
"Malleshwaram",
169,
56
],
[
"Kolar",
178,
90
]
]
在我的第一篇文章中,json数据以日期重复,日期分别为2018-8
和2017-8
我想映射数据并将其简化为我试图获取的数据
我知道可以用JavaScript来完成,但我不知道怎么做。假设您的每个“地点”的数据按年度顺序正确,您可以使用如下方式:
const input=[“年”、“2018-9”、“2017-9”]、[“贾亚纳加尔”、“2018-9”、857]、“马勒什瓦拉姆”、“2018-9”、169]、“科拉尔”、“2018-9”、178]、“贾亚纳加尔”、“2017-9”、635]、“马勒什瓦拉姆”、“2017-9”、56]、“科拉尔”、“2017-9”、90]]
const merged=input.reduce((acc,arr)=>{
const[城市、年份、价值]=arr;
如果(城市==“年”)
acc[城市]=arr
否则{
acc[城市]=acc[城市]
acc[城市].推送(值)
}
返回acc;
}, {})
常量输出=对象值(合并)
console.log(输出)
您可以将数据分组以创建所需的结构
const first=foo.shift();
const res=Array.from(
foo.reduce((a[t,|,n])=>a.set(t,(a.get(t)| |[]).concat(n)),新映射)
).map(e=>[].concat(…e));
解除移位(第一);
控制台日志(res)代码>
常数foo=[
[
“年”,
'2018-9',
'2017-9'
],
[
“JAYANAGAR”,
'2018-9',
857
],
[
“MALLESHWARAM”,
'2018-9',
169
],
[
“科拉尔”,
'2018-9',
178
],
[
“JAYANAGAR”,
'2017-9',
635
],
[
“MALLESHWARAM”,
'2017-9',
56
],
[
“科拉尔”,
'2017-9',
90
]
];
const数据集=[
[
“年”,
"2018-9",
"2017-9"
],
[
“JAYANAGAR”,
"2018-9",
857
],
[
“马勒什瓦拉姆”,
"2018-9",
169
],
[
“科拉尔”,
"2018-9",
178
],
[
“JAYANAGAR”,
"2017-9",
635
],
[
“马勒什瓦拉姆”,
"2017-9",
56
],
[
“科拉尔”,
"2017-9",
90
]
];
const-dataBody=dataSet.slice(1);
const transformedDataBody=dataBody.reduce(函数(currentValue,nextValue){
currentValue[nextValue[0]]=currentValue[nextValue[0]]| |[nextValue[0]];
currentValue[nextValue[0]]。推送(nextValue[2]);
返回当前值;
}, {})
设finalDataSet=[dataSet[0]];
Object.key(transformedDataBody).map(function(key){
push(transformedDataBody[key]);
})
console.log(finalDataSet)代码>