我有一個數組,看起來像:從兩個陣列組合值在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