【问题标题】:Accessing nested array in JavaScript在 JavaScript 中访问嵌套数组
【发布时间】:2018-07-06 18:47:10
【问题描述】:

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

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] ,......]

【问题讨论】:

  • allTimeStampsData[0].push("121"); ?!
  • 也许您收到的数组示例会有所帮助。

标签: javascript arrays javascript-objects


【解决方案1】:

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

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);
  });

【讨论】:

  • 奖金承诺!不错。
【解决方案2】:

我相信您正在寻找的是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'];

【讨论】:

  • 基本上我想要访问嵌套数组的元素。这与嵌套数组无关
  • @tadman 当我回答问题时,他将其设置为append,而不是push
  • 啊,就这一行。不过,问题的其余部分已经包含push
【解决方案3】:

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

allTimeStampsData[allTimeStampsData.length] = allTimeStamps;

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

【讨论】:

    【解决方案4】:

    我认为最初的问题需要在这里澄清。正如@josh 提到的,您使用$.push() 将数据附加到数组的末尾。无论数组使用多少层,.push() 都是向数组添加数据的最佳方式。这听起来像是一个重复的问题,在这里发布javascript-push-multidimensional-array

    【讨论】:

    • 这感觉更像是评论,而不是现在或将来有用的答案。如果这是重复的,只需像这样标记或评论,模组通常会选择该线程。
    猜你喜欢
    • 2019-09-16
    • 1970-01-01
    • 2016-09-14
    • 2021-05-27
    • 1970-01-01
    • 2021-12-10
    • 1970-01-01
    • 1970-01-01
    • 2019-08-12
    相关资源
    最近更新 更多