Javascript 带键的对象:值,其中每个值都是对象数组-无法迭代

Javascript 带键的对象:值,其中每个值都是对象数组-无法迭代,javascript,arrays,object,d3.js,iteration,Javascript,Arrays,Object,D3.js,Iteration,当我用保存下载数据的每条记录创建一个对象时,我是通过d3.json下载数据的。每个对象将存储在一个数组中。我失去了遍历数组的能力 我尝试过使用多维数组,但仍然无法迭代创建的对象 var datamodel = { "mkt":[], "confidence":[], "homes":[], "combined":[] } var tObject={}; // console.log(datamodel) const url1 = "https://www.qu

当我用保存下载数据的每条记录创建一个对象时,我是通过d3.json下载数据的。每个对象将存储在一个数组中。我失去了遍历数组的能力

我尝试过使用多维数组,但仍然无法迭代创建的对象

var datamodel = {
    "mkt":[],
    "confidence":[],
    "homes":[],
    "combined":[]
}

var tObject={};

// console.log(datamodel)
const url1 = "https://www.quandl.com/api/v3/datasets/YALE/SPCOMP.json?start_date='2015-01-01'&end_date='2018-09-30'&api_key=4QuxetVDNP8R3sYg9CED";

// Fetch the JSON data and console log it
d3.json(url1).then(function(data) {
    data.dataset.data.forEach(element => {
        tObject['date']=element[0];
        tObject['spx'] = element[1];
        tObject['rate']=element[5];
        datamodel['mkt'].push(tObject); //creating an array of objects
        tObject={};
    });
});
我对其他数据集重复上面的代码,以填充信心,家庭 我需要在下载数据模型之后进行迭代,并更新组合数据,这样我就可以有更多的统计数据,比如每个日期的变化率。 例如:进入任何浏览器中的调试控制台,我都可以通过datamodel.mkt访问datamodel变量


调试控制台允许我迭代对象,但不确定为什么JS文件中运行的代码不允许我迭代而不获取数组的长度。我太迷路了。

我在浏览器中点击API并将数据复制到我的js文件中。我在HTML onload中调用这个函数。此函数的一半功能与代码在datamodel.mkt中填充数据的功能相同

然后它在datamodel.mkt中存在的数据上循环,并复制datamodel.combined中的元素

请注意,注释过的forEach循环也可以工作。您可以取消对console.log的注释以查看console中的datamodel对象

希望这有帮助。 函数集合数据{ var data={dataset:{id:539984,数据集_代码:SPCOMP,数据库_代码:YALE,名称:S\u0026P Composite,说明:此数据集包括每月股票价格、股息和收益数据以及允许转换为实际值的消费者价格指数,所有数据均从1871年1月开始。更多信息,请访问http://www.econ.yale.edu/~shiller/data.htm.,更新时间:2019-08-24T02:51:26.805Z,最新可用日期:2019-08-31,最早可用日期:1871-01-31,列名:[年份,S\u0026P综合,股息,收益,CPI,长期利率,实际价格,实际股息,实际收益,周期调整的市盈率],频率:每月,类型:时间序列,保费:假,限额:空,转换:空,列索引:空,开始日期:2015-01-01,结束日期:2018-09-30,数据:[[2018-09-302901.5,52.34130.39252.439,3.02944.5129194578,53.11590770443132.32295004932.6228911205],[2018-08-31,2857.82,51.89,127.75333333333,252.146,2.89,2903.555479266,52.720428095231,129.79784975768,32.390276880301],[2018-07-31,2793.64,51.44,125.11666666667,252.006,2.89,2839.9251892812,52.29226089855,127.18960684468,31.886366962159],[2018-06-30,2754.35,50.99,122.48,251.989,2.91,2800.1731263567,51.838302217557,124.51765553258,31.630556496455],[2018-05-31,2701.49,50.66,120.13333333333,251.588,2.976,2750.8111875864,51.58490120753,122.32661136461,31.243615074865],[2018-04-30,2653.63,50.33,117.78666666667,250.546,2.87,2713.3151215246,51.462016206605,120.43590997262,30.970179293325],[2018-03-31,2702.77,50.0,115.44,249.554,2.84,2774.5457779178,51.327818828791,118.50566811191,31.808409057643],[2018-02-28,2705.16,49.643333333333,113.58666666667,248.991,2.86,2783.2783925925,51.076911163456,116.86677128892,32.03538233925],[2018-01-31,2789.8,49.286666666667,111.73333333333,247.867,2.58,2883.3787928607,50.939898715844,115.48122581868,33.307343828031],[2017-12-31,2664.34,48.93,109.88,246.524,2.4,2768.7119778399,50.846767708215,114.18440293846,32.086132007706],[2017-11-30,2593.61,48.676666666667,108.94666666667,246.669,2.35,2693.6268919585,50.553775758202,113.14795637068,31.29891333388],[2017-10-31,2557.0,48.423333333333,108.01333333333,246.663,2.36,2655.6697042118,50.291896484272,112.18135979048,30.920393290334],[2017-09-30,2492.84,48.17,107.08,246.819,2.2,2587.3975149806,49.997167205523,111.14172024844,30.168114410679],[2017-08-31,2456.22,47.853333333333,106.06,245.519,2.21,2562.8872302144,49.931478826486,110.66590925753,29.914959397497],[2017-07-31,2454.1,47.536666666667,105.04,244.786,2.32,2568.3429837695,49.749588160679,109.92981011986,30.002220744019],[2017-06-30,2433.99,47.22,104.02,244.955,2.19,2545.5393875916,49.384085342206,108.78722061195,29.748503240633],[2017-05-31,2395.35,46.94,102.77666666667,244.733,2.3,2507.4009520069,49.135784201558,107.58440805899,29.313344980271],[2017-04-30,2359.31,46.66,101.53333333333,244.524,2.3,2471.7859389569,48.884433123129,106.37375574586,28.904245956275],[2017-03-31,2366.82,46.38,100.29,243.801,2.48,2487.0074615157,48.735183100151,105.3827406881,29.086921742465],[2017-02-28,2329.91,46.153333333333,98.376666666667,243.603,2.42,2450.2130769633,48.536424530897,103.4562687549,28.655106525184],[2017-01-31,2275.12,45.926666666667,96.463333333333,242.839,2.43,2400.1214199531,48.45000545629,101.76329713308,28.063573742124],[2016-12-31,2246.63,45.7,94.55,241.432,2.49,2383.8782004353,48.49184501226,100.32612573105,27.865098223924],[2016-11-30,2164.99,45.476666666667,92.73,241.353,2.14,2298.0026949634,48.27066293976,98.427147425141,26.850953531056],[2016-10-31,2143.02,45.253333333333,90.91,241.729,1.76,2271.1447214649,47.958894050776,96.34523552201,26.525143085071],[2016-09-30,2157.69,45.03,89.09,241.428,1.63,2289.5427262476,47.781705881256,94.5341367302 05,26.727873346479],[2016-08-31,2170.95,44.84,88.366666666667,240.849,1.56,2309.1508982288,47.694477660277,93.992016263302,26.948872433724],[2016-07-31,2148.9,44.65,87.643333333333,240.628,1.5,2287.7964664337,47.53600084986,93.308254598384,26.694003256096],[2016-06-30,2083.89,44.46,86.92,241.018,1.64,2214.9945027446,47.257127579683,92.388428457626,25.840372927671],[2016-05-31,2065.55,44.266666666667,86.76,240.229,1.81,2202.7115000166,47.206165783482,92.521241190697,25.69470992345],[2016-04-30,2075.54,44.073333333333,86.6,239.261,1.81,2222.3196911532,47.190146430049,92.72424778798,25.922337543674],[2016-03-31,2021.95,43.88,86.44,238.132,1.89,2175.2039979402,47.20589106042,92.991732526498,25.372298620188],[2016-02-29,1904.42,43.716666666667,86.47,237.111,1.78,2057.5877800903,47.232689805618,93.42456776573,24.00260677729],[2016-01-31,1918.6,43.553333333333,86.5,236.916,2.09,2074.6144044725,47.094950847558,93.533902838981,24.206167203878],[2015-12-31,2054.08,43.39,86.53,236.525,2.24,2224.7829278089,46.995896575415,93.721017070077,25.965424037124],[2015-11-30,2080.62,43.096666666667,87.906666666667,237.336,2.26,2245.8279922768,46.518682111016,94.886741792227,26.225851890972],[2015-10-31,2024.81,42.803333333333,89.283333333333,237.838,2.07,2180.9734222979,46.104539381848,96.169308258142,25.491441046067],[2015-09-30,1944.41,42.51,90.66,237.945,2.17,2093.4307689277,45.767992340667,97.608237723003,24.496752170486],[2015-08-31,2039.87,42.253333333333,92.076666666667,238.316,2.17,2192.7879220761,45.420835151647,98.979151892865,25.693658417058],[2015-07-31,2094.14,41.996666666667,93.493333333333,238.654,2.32,2247.9380311036,45.080989895413,100.35967970367,26.3811363364],[2015-06-30,2099.29,41.74,94.91,238.638,2.36,2253.6173464096,44.808477170442,101.88722013049,26.495895292785],[2015-05-31,2111.94,41.43,96.356666666667,237.805,2.2,2275.1389967621,44.631480362061,103.80257485124,26.806111379651],[2015-04-30,2094.86,41.12,97.803333333333,236.599,1.94,2268.2422722624,44.523320047845,105.89808151133,26.791371680192],[2015-03-31,2079.99,40.81,99.25,236.119,2.04,2256.7198666245,44.277490640313,107.68294403458,26.728605452928],[2015-02-28,2082.2,40.353333333333,100.27,234.722,1.98,2272.5632823084,44.042600927906,109.43709553216,26.995513699383],[2015-01-31,2028.18,39.896666666667,101.29,233.707,1.88,2223.2183358864,43.733298264494,111.03047325283,26.492295420383]],折叠:null,顺序:null,数据库_id:175} var数据模型={ 市场:[], 信心:[], 住家:[], 合并:[] } var-tObject={}; data.dataset.data.forEachelement=>{ tObject['date']=元素[0]; tObject['spx']=元素[1]; tObject['rate']=元素[5]; datamodel['mkt'].pushToObject;//创建对象数组 tObject={}; }; /* datamodel.mkt.forEachelement=>{ 数据模型[combined].pushelement; };*/ forvar i=0;i您可以使用map或forEach完成工作。在forEach中,您正在推送对象,但数组仅由最后一个对象更新。您可以执行以下操作:

让数据={ 数据集:{ 身份证号码:539984, 数据集_代码:SPCOMP, 数据库代码:耶鲁大学, 名称:标准普尔综合指数, 说明:此数据集包括每月股票价格、股息和收益数据以及允许转换为实际价值的消费者价格指数,所有这些数据均从1871年1月开始。更多信息,请访问http://www.econ.yale.edu/~shiller/data.htm。, 更新时间:2019-08-24T02:51:26.805Z, 最新可用日期:2019-08-31, 最古老的可用日期:1871-01-31, 列名称:[ 年 标准普尔综合指数, 股息 薪水 消费物价指数, 长期利率, 实际价格, 实际股息, 实际收入, 周期性调整的市盈率 ], 频率:每月, 类型:时间序列, 溢价:错, 限制:空, 转换:null, 列索引:null, 开工日期:2015-01-01, 结束日期:2018年9月30日, 数据:[ [ 2018-09-30, 2901.5, 52.34, 130.39, 252.439, 3.0, 2944.5129194578, 53.115907704436, 132.32295004932, 32.6228911205 ], [ 2018-08-31, 2857.82, 51.89, 127.75333333333, 252.146, 2.89, 2903.555479266, 52.720428095231, 129.79784975768, 32.390276880301 ], [ 2018-07-31, 2793.64, 51.44, 125.11666666667, 252.006, 2.89, 2839.9251892812, 52.29226089855, 127.18960684468, 31.886366962159 ], [ 2018-06-30, 2754.35, 50.99, 122.48, 251.98 9, 2.91, 2800.1731263567, 51.838302217557, 124.51765553258, 31.630556496455 ], [ 2018-05-31, 2701.49, 50.66, 120.13333333333, 251.588, 2.976, 2750.8111875864, 51.58490120753, 122.32661136461, 31.243615074865 ], [ 2018-04-30, 2653.63, 50.33, 117.78666666667, 250.546, 2.87, 2713.3151215246, 51.462016206605, 120.43590997262, 30.970179293325 ], [ 2018-03-31, 2702.77, 50.0, 115.44, 249.554, 2.84, 2774.5457779178, 51.327818828791, 118.50566811191, 31.808409057643 ], [ 2018-02-28, 2705.16, 49.643333333333, 113.58666666667, 248.991, 2.86, 2783.2783925925, 51.076911163456, 116.86677128892, 32.03538233925 ], [ 2018-01-31, 2789.8, 49.286666666667, 111.73333333333, 247.867, 2.58, 2883.3787928607, 50.939898715844, 115.48122581868, 33.307343828031 ], [ 2017-12-31, 2664.34, 48.93, 109.88, 246.524, 2.4, 2768.7119778399, 50.846767708215, 114.18440293846, 32.086132007706 ], [ 2017-11-30, 2593.61, 48.676666666667, 108.94666666667, 246.669, 2.35, 2693.6268919585, 50.553775758202, 113.14795637068, 31.29891333388 ], [ 2017-10-31, 2557.0, 48.423333333333, 108.01333333333, 246.663, 2.36, 2655.6697042118, 50.291896484272, 112.18135979048, 30.920393290334 ], [ 2017-09-30, 2492.84, 48.17, 107.08, 246.819, 2.2, 2587.3975149806, 49.997167205523, 111.14172024844, 30.168114410679 ], [ 2017-08-31, 2456.22, 47.853333333333, 106.06, 245.519, 2.21, 2562.8872302144, 49.931478826486, 110.66590925753, 29.914959397497 ], [ 2017-07-31, 2454.1, 47.536666666667, 105.04, 244.786, 2.32, 2568.3429837695, 49.749588160679, 109.92981011986, 30.002220744019 ], [ 2017-06-30, 2433.99, 47.22, 104.02, 244.955, 2.19, 2545.5393875916, 49.384085342206, 108.78722061195, 29.748503240633 ], [ 2017-05-31, 2395.35, 46.94, 102.77666666667, 244.733, 2.3, 2507.4009520069, 49.135784201558, 107.58440805899, 29.313344980271 ], [ 2017-04-30, 2359.31, 46.66, 101.53333333333, 244.524, 2.3, 2471.7859389569, 48.884433123129, 106.37375574586, 28.904245956275 ], [ 2017-03-31, 2366.82, 46.38, 100.29, 243.801, 2.48, 2487.0074615157, 48.735183100151, 105.3827406881, 29.086921742465 ], [ 2017-02-28, 2329.91, 46.153333333333, 98.376666666667, 243.603, 2.42, 2450.2130769633, 48.536424530897, 103.4562687549, 28.655106525184 ], [ 2017-01-31, 2275.12, 45.926666666667, 96.463333333333, 242.839, 2.43, 2400.1214199531, 48.45000545629, 101.76329713308, 28.063573742124 ], [ 2016-12-31, 2246.63, 45.7, 94.55, 241.432, 2.49, 2383.8782004353, 48.49184501226, 100.32612573105, 27.865098223924 ], [ 2016-11-30, 2164.99, 45.476666666667, 92.73, 241.353, 2.14, 2298.0026949634, 48.27066293976, 98.427147425141, 26.850953531056 ], [ 2016-10-31, 2143.02, 45.253333333333, 90.91, 241.729, 1.76, 2271.1447214649, 47.958894050776, 96.34523552201, 26.525143085071 ], [ 2016-09-30, 2157.69, 45.03, 89.09, 241.428, 1.63, 2289.5427262476, 47.781705881256, 94.534136730205, 26.727873346479 ], [ 2016-08-31, 2170.95, 44.84, 88.366666666667, 240.849, 1.56, 2309.1508982288, 47.694477660277, 93.992016263302, 26.948872433724 ], [ 2016-07-31, 2148.9, 44.65, 87.643333333333, 240.628, 1.5, 2287.7964664337, 47.53600084986, 93.308254598384, 26.694003256096 ], [ 2016-06-30, 2083.89, 44.46, 86.92, 241.018, 1.64, 2214.9945027446, 47.257127579683, 92.388428457626, 25.840372927671 ], [ 2016-05-31, 2065.55, 44.266666666667, 86.76, 240.229, 1.81, 2202.7115000166, 47.206165783482, 92.521241190697, 25.69470992345 ], [ 2016-04-30, 2075.54, 44.073333333333, 86.6, 239.261, 1.81, 2222.3196911532, 47.190146430049, 92.72424778798, 25.922337543674 ], [ 2016-03-31, 2021.95, 43.88, 86.44, 238.132, 1.89, 2175.2039979402, 47.20589106042, 92.991732526498, 25.372298620188 ], [ 2016-02-29, 1904.42, 43.716666666667, 86.47, 237.111, 1.78, 2057.5877800903, 47.232689805618, 93.42456776573, 24.00260677729 ], [ 2016-01-31, 1918.6, 43.553333333333, 86.5, 236.916, 2.09, 2074.6144044725, 47.094950847558, 93.533902838981, 24.206167203878 ], [ 2015-12-31, 2054.08, 43.39, 86.53, 236.525, 2.24, 2224.7829278089, 46.995896575415, 93.721017070077, 25.965424037124 ], [ 2015-11-30, 2080.62, 43.096666666667, 87.906666666667, 237.336, 2.26, 2245.8279922768, 46.518682111016, 94.886741792227, 26.225851890972 ], [ 2015-10-31, 2024.81, 42.803333333333, 89.283333333333, 237.838, 2.07, 2180.9734222979, 46.104539381848, 96.169308258142, 25.491441046067 ], [ 2015-09-30, 1944.41, 42.51, 90.66, 237.945, 2.17, 2093.4307689277, 45.767992340667, 97.608237723003, 24.496752170486 ], [ 2015-08-31, 2039.87, 42.253333333333, 92.076666666667, 238.316, 2.17, 2192.7879220761, 45.420835151647, 98.97915189286 5. 25.693658417058 ], [ 2015-07-31, 2094.14, 41.996666666667, 93.493333333333, 238.654, 2.32, 2247.9380311036, 45.080989895413, 100.35967970367, 26.3811363364 ], [ 2015-06-30, 2099.29, 41.74, 94.91, 238.638, 2.36, 2253.6173464096, 44.808477170442, 101.88722013049, 26.495895292785 ], [ 2015-05-31, 2111.94, 41.43, 96.356666666667, 237.805, 2.2, 2275.1389967621, 44.631480362061, 103.80257485124, 26.806111379651 ], [ 2015-04-30, 2094.86, 41.12, 97.803333333333, 236.599, 1.94, 2268.2422722624, 44.523320047845, 105.89808151133, 26.791371680192 ], [ 2015-03-31, 2079.99, 40.81, 99.25, 236.119, 2.04, 2256.7198666245, 44.277490640313, 107.68294403458, 26.728605452928 ], [ 2015-02-28, 2082.2, 40.353333333333, 100.27, 234.722, 1.98, 2272.5632823084, 44.042600927906, 109.43709553216, 26.995513699383 ], [ 2015-01-31, 2028.18, 39.896666666667, 101.29, 233.707, 1.88, 2223.2183358864, 43.733298264494, 111.03047325283, 26.492295420383 ] ], 折叠:null, 顺序:空, 资料库编号:175 } } var数据模型={ 市场:[], 信心:[], 住家:[], 合并:[] } var-tObject={}; 数据['dataset']['data'].mapmkt,索引=>{ tObject['date']=mkt[0]; tObject['spx']=mkt[1]; tObject['rate']=mkt[5]; 数据模型['mkt'].pushJSON.parseJSON.StringifyToObject }
console.logdatamodel['mkt'].length非常感谢Sumir。我看到代码在snippet按钮上运行。我似乎无法在我这边复制它。它在实际的HTML端继续显示为零。我只是使用了与表示json对象的实际字符串相等的var数据,它可以工作。通过这种方式,数组似乎工作得很好,并且成功地创建了length属性。但是,然后运行d3.json并从那里运行它,数组似乎没有任何长度属性。这对我来说非常奇怪。我是一名python程序员,但试图通过JS探索可视化,这让我抓狂:最奇怪的是:现在,当代码完全封装在一个函数中,而不是单独封装时,它就可以工作了。我无法在函数外调用length属性。您可以共享此代码吗?这可能是由于JavaScript.newbie中的作用域和闭包属性造成的,所以问题是:如何在同一个线程上发布代码?