如何使用 JavaScript 将值推入嵌套数组?

问题描述 投票:0回答:2

我有以下代码,我正在尝试将随机生成的数字推入数据数组中。我只是不太确定如何访问该数组。我知道我的代码可能非常草率且低效,但我正在尽力学习并陷入困境。我真的很感激任何帮助。

<script>
  var balance = 0;

  function nextDay() {
    var dayCount = 0;
    if (dayCount < 5) {
      randNum = Math.random() * (max - min) + min;
      console.log(randNum);
      max = randNum + 50;
      min = randNum - 50;
      dayCount++;
    }
  }

  function sell() {
    balance = balance + randNum;
    console.log("current balance:" + balance);
    randNum = 0;
    max = randNum + 50;
    min = randNum - 50;
  }

  const startingValues = [];
  function getStartingValues() {
    var max = 100;
    var min = -100;
    for (let startingCount = 0; startingCount < 8; startingCount++) {
      var randNum = Math.random() * (max - min) + min;
      max = randNum + 500;
      min = randNum - 100;
      data.datasets[3].data.push(randNum);
      console.log(startingValues[startingCount]);
    }
  }
  getStartingValues();

  const labels = ["Week 1", "Week 2", "Week 3", "Week 4", "Week 5", "Week 6"];

  const data = {
    labels: labels,
    datasets: [
      {
        label: "graph",
        backgroundColor: "rgb(255, 99, 132)",
        borderColor: "rgb(255, 99, 132)",
        data: [],
      },
    ],
  };

  const config = {
    type: "line",
    data: data,
    options: {},
  };
</script>
javascript arrays nested
2个回答
0
投票

问题似乎出在这行代码

data.datasets[3].data.push(randNum);
。您正在访问
datasets
属性,该属性具有一个数组作为值。您正在尝试访问该数组中不存在的索引 3。经过仔细检查,我们发现该数组仅包含一个对象元素。因此,您应该这样做
data.datasets[0].data.push(randNum);
,它允许您访问数组中索引 0 处的第一个元素。


0
投票

使用

Array
构造函数可以创建嵌套数组(还有其他方法)。

  const data = [];
  const startingValues = [];
  
function getStartingValues() {
    var max = 100
    var min = -100
    for (let i = 0; i <= 7; i++) {

        data[i] = Math.random() * (max - min) + min;
    }
    //Add data as nested arrray to startingValues 
    startingValues[0] = new Array(data);
}

getStartingValues();
console.log(startingValues); //Starting values is a 1x8 nested array

© www.soinside.com 2019 - 2024. All rights reserved.