gpt4 book ai didi

javascript - 估算 JavaScript 数组中的缺失值

转载 作者:太空宇宙 更新时间:2023-11-04 16:24:31 25 4
gpt4 key购买 nike

我有以下 JavaScript 代码,它使用 sql.js库与远程 SQL 数据库通信。

var xhr = new XMLHttpRequest();
xhr.open('GET', 'https://dl.dropboxusercontent.com/u/540963/test.sqlite', true);
xhr.responseType = 'arraybuffer';
var output = [];

xhr.onload = function(e) {
var uInt8Array = new Uint8Array(this.response);
var db = new SQL.Database(uInt8Array);
var data = db.exec("SELECT year, weight FROM freq_data WHERE doi = 'D007266'");

$.each(data[0].values, function(key, value) {
output.push({'year': value[0], 'weight': value[1]});
});
};
xhr.send();

输出存储在output数组中。例如,对于给定数组,数据如下:

{ year=1996,  weight=3}
{ year=1999, weight=2}
{ year=2004, weight=5}
{ year=2005, weight=3}
{ year=2006, weight=2}

数据存在一些差距;例如,没有 1997 年、1998 年、2000-2003 年的条目。我想知道如何估算数据以用 0 值填充缺失的年份,最终得到:

{ year=1996,  weight=3}
{ year=1997, weight=0}
{ year=1998, weight=0}
{ year=1999, weight=2}
...
{ year=2006, weight=2}

最合适的方法是什么?

最佳答案

假设数据将按年份排序,您可以像这样使用.reduce():

var data = [ { year: 1996,  weight: 3},
{ year: 1999, weight: 2},
{ year: 2004, weight: 5},
{ year: 2005, weight: 3},
{ year: 2006, weight: 2} ];

var final = data.reduce(function(prev, curr, index, arr) {
prev.push(curr);
if (index < arr.length - 1) {
var nextYearInData = arr[index + 1].year;
var yearToAdd = curr.year + 1;
while (yearToAdd < nextYearInData) {
prev.push({year: yearToAdd, weight: 0});
yearToAdd++;
}
}
return prev;
}, []);

console.log(final)

关于javascript - 估算 JavaScript 数组中的缺失值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40345453/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com