我有一个数组,看起来像:从两个阵列组合值在JavaScript
var data = [{"year":[1981],"weight":[3]},
{"year":[1982],"weight":[4]},
{"year":[1985],"weight":[7]}]
我的数据系列,1980年开始,以一年1986年结束我的任务是输入所有缺失值到数组;在我的情况下,最终阵列应该是:
var data = [{"year":[1980],"weight":[0]},
{"year":[1981],"weight":[3]},
{"year":[1982],"weight":[4]},
{"year":[1983],"weight":[0]},
{"year":[1984],"weight":[0]},
{"year":[1985],"weight":[7]},
{"year":[1986],"weight":[0]}]
我在两个步骤中实现了这个任务。首先,我创建了一个长度为七个元素(1980 - 1986年)的空数组,并初始化每个元素的值为{"year": $CURRENT_YEAR, "weight": 0}
。然后,我循环访问data
数组,在空数组中找到当前年份的索引,并用当前值替换year
和weight
字段。我的代码粘贴在下面。
我不知道代码是否可以用更优雅的方式重写。
// Create empty array
var my_array = []
var length = 7
// 1st step
year = 1980
for (var i = 0; i < length; i++) {
my_array.push({"year": year, "weight": 0});
year++
}
// 2nd step
for (var j = 0; j < data.length; j++) {
curr_year = data[j]["year"][0];
curr_weight = data[j]["weight"][0]
var index = my_array.findIndex(function(item, i) {return item.year === curr_year})
my_array[index] = {"year": curr_year, "weight": curr_weight}
}
为什么在阵列中的值,如[1981]和[3]?你打算存储更多的价值吗?我发现你的代码在第一步中并没有将值存储为数组,但是它在第二步中部分地完成了。所以二者之一是错误的。你的代码不能像那样工作。 – trincot
“我想知道代码是否可以用更优雅的方式重写。” - 如果这是你的问题,是不是应该发布到[codereview](http://codereview.stackexchange.com/)? – evolutionxbox
那么,代码显然没有做OP的要求,所以我认为这个问题真的应该改写为*“这是行不通的,因为我得到了这个结果(....),而不是所期望的结果(...)。 我做错了什么?”*。不适用于CodeReview。 – trincot