【发布时间】:2019-03-12 17:17:21
【问题描述】:
我有一个数组,我正在将它变成一个适合我工作的新数组。这是我拥有的原始数组:
注意:“jayanagar”、“mallashwaram”、“kolar”在我的代码中被称为城市。
var array1=[
["Year", "2018-8", "2017-8"],
["JAYANAGAR", "2018-8", 10910665],
["MALLESHWARAM", "2018-8", 2018451],
["KOLAR", "2018-8", 2277562],
["JAYANAGAR", "2017-8", 1134]
]
然后我将它转换成这个:
var array2=[
["Year", "Jul 2018", "Jul 2017"],
["JAYANAGAR", 10910665, 1134],
["MALLESHWARAM", 2018451],
["KOLAR", 2277562]
]
我想做的是
-
1234563数据,即
所以我想做的是,每当上一个日期的城市数量较少时,我想为那个城市显示为
0例如在
array2中,我没有malleshwaram和kolar的数据,所以我想在那里显示为0而用户选择的年份会给我所有城市的名称,因此我想在这里循环其他日期数据,即
array2最高的日期总是会有所有城市的名字
jayanagar
我做了什么
var input = [
["Year", "2018-8", "2017-8"],
["JAYANAGAR", "2018-8", 10910665],
["MALLESHWARAM", "2018-8", 2018451],
["KOLAR", "2018-8", 2277562],
["JAYANAGAR", "2017-8", 1134]
]
var e = input[0]
var a = new Date(e[1]);
a.setMonth(a.getMonth());
a = a.toUTCString();
var c = a.split(' ');
e[1] = c[2] + " " + c[3];
a = new Date(e[2]);
a.setMonth(a.getMonth());
a = a.toUTCString();
c = a.split(' ');
e[2] = c[2] + " " + c[3];
const merged = input.reduce((acc, arr) => {
const [city, year, value] = arr;
if (city === "Year")
acc[city] = arr
else {
acc[city] = acc[city] || [city]
acc[city].push(value)
}
return acc;
}, {})
const output = Object.values(merged)
console.log(output)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
我的预期输出
[
[
"Year",
"Aug 2018",
"Aug 2017"
],
[
"JAYANAGAR",
10910665,
1134
],
[
"MALLESHWARAM",
2018451,
0
],
[
"KOLAR",
2277562,
0
]
]
【问题讨论】:
-
我相信 7 月是一年中的第 7 个月……不应该是
August 2018等吗? -
您的代码中没有 JSON。 JSON 是一种类似于 JS 文字的文本格式。你所拥有的是一个数组数组。
-
@JackBashford 由于浏览器的依赖关系,它被视为 7 月
-
它不是 JSON!
-
@AbhishekGautam 很好,我已经编辑了我的帖子
标签: javascript json