在JavaScript中访问嵌套数组

时间:2018-07-06 18:47:11

标签: javascript arrays javascript-objects

我写了一些代码,其中数据正在进入数组。在每个索引处,我都有另一个数组,该数组具有包含五个数据元素的数组。我想做的是在每个嵌套数组的末尾添加数据。

var allTimeStamps = [];
var allTimeStampsData = [];
$.getJSON( "https://www.alphavantage.co/query?function=TIME_SERIES_DAILY&symbol=MSFT&apikey=demo", function( data ) {

    const responseData = data;

    for(let key in responseData["Time Series (Daily)"]){
        allTimeStamps.push(key);
        allTimeStamps.push(parseFloat((responseData["Time Series (Daily)"][key]["3. low"])));
        allTimeStamps.push(parseFloat(responseData["Time Series (Daily)"][key]["1. open"]));
        allTimeStamps.push(parseFloat(responseData["Time Series (Daily)"][key]["4. close"]));
        allTimeStamps.push(parseFloat(responseData["Time Series (Daily)"][key]["2. high"]));
        allTimeStampsData.push(allTimeStamps);
        allTimeStamps=[];
    }
    console.log("seperatedData", allTimeStampsData);                
});

我正在尝试这样的事情:

allTimeStampsData[0].append("121");

allTimeStampsData[0].push("121");

由于Python,我写了append。我实际上是在尝试推动,但这不起作用。

我期望输出如下:

[ ["08-2-2018",98,12,98,78,121] ,......]

4 个答案:

答案 0 :(得分:3)

执行此类操作的最佳方法是在.map属性的条目上使用简单的"Time Series (Daily)",从中可以提取日期和低/开/关/高:< / p>

fetch("https://www.alphavantage.co/query?function=TIME_SERIES_DAILY&symbol=MSFT&apikey=demo")
  .then(res => res.json())
  .then(responseData => {
    const daily = responseData["Time Series (Daily)"];
    const keys = [
      '3. low',
      '1. open',
      '4. close',
      '2. high',
    ];
    const allTimeStampsData = Object.entries(daily)
      .map(([date, infoObj]) => (
        [date, ...keys.map(key => infoObj[key])]
      ));
    console.log(allTimeStampsData[0]);
    console.log(allTimeStampsData);
  });

答案 1 :(得分:0)

我相信您正在寻找的是push方法。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/push

初始化数组 var my_arr = ['Volvo', 'Ford', 'Chevrolet'];

然后使用push方法向其中添加新值。

my_arr.push('Mercedes');

现在my_arr = ['Volvo', 'Ford', 'Chevrolet', 'Mercedes'];

答案 2 :(得分:0)

您应在allTimeStampsData数组中明确分配该字段:

allTimeStampsData[allTimeStampsData.length] = allTimeStamps;

此后,allTimeStampsData[i].push("121");将起作用。

答案 3 :(得分:0)

我认为这里的原始问题需要澄清。如@josh所述,您使用$.push()将数据附加到数组的末尾。无论阵列使用.push()层有多深,都是将数据添加到阵列的最佳方法。同样,这听起来像是一个重复的问题,发布在这里javascript-push-multidimensional-array