如何在JavaScript中推送多维数组

3
我想使用 JavaScript 推送多维数组。我需要用它来设置 ChartJs 的数据集。 我希望结果像这样:
datasets: [{
    label: 'Manajemen Informatika',
    data: [100, 105, 203, 160, 200],
    backgroundColor: 'rgba(189, 99, 132, 0.2)',
    borderColor: 'rgba(189, 99, 132, 1)',
    borderWidth: 1
}, {
    label: 'Teknik Informatika',
    data: [105, 100, 250, 170, 190],
    backgroundColor: 'rgba(94, 126, 189, 0.2)',
    borderColor: 'rgba(94, 126, 189, 1)',
    borderWidth: 1
}, {
    label: 'Sistem Informasi',
    data: [90, 120, 225, 185, 200],
    backgroundColor: 'rgba(72, 189, 122, 0.2)',
    borderColor: 'rgba(72, 189, 122, 1)',
    borderWidth: 1
}]

你现有的数据结构是什么样子?目前你的代码长什么样子? - Dean James
1
您所期望的结果不是一个多维数组。 - danronmoon
4个回答

0

别担心,这个架构有点混乱,总是难以编写和阅读。

你应该使用类似于这样的东西:

var d = {
  datasets: [
    {
      label: 'Manajemen Informatika',
      data: [100, 105, 203, 160, 200],
      backgroundColor: 'rgba(189, 99, 132, 0.2)',
      borderColor: 'rgba(189, 99, 132, 1)',
      borderWidth: 1
    }
  ]
}


d.datasets.push(
  {
    label: 'Sistem Informasi',
    data: [90, 120, 225, 185, 200],
    backgroundColor: 'rgba(72, 189, 122, 0.2)',
    borderColor: 'rgba(72, 189, 122, 1)',
    borderWidth: 1
  }
)

// Read a particular value
console.log(d.datasets[1].label)

// Whole object
console.log(d)

我们不应该手写对象,但是chart.js就是这样制作的,强制每个配置都嵌套在对象中,使用插件时会变得更糟,因为你还需要将函数传递进去,这使得脚本变得混乱。

顺便说一下,建议完全避免使用chart.js,出于不同的原因


0

你想要的数据集看起来像是一个对象数组,花括号内的每个数据都是一个对象。 因此,如果你想在JS中放置多维数组,需要创建每个对象变量,向其中添加数据,然后将其推入数组中。就像这样:

let arr = [];
let obj1 = {}; //add data to this object
arr.push(obj1);
let obj2 = {}; //add data to this object
arr.push(obj2);
.
.
.
let objn = {}; //add data to this object
arr.push(objn)

可以用 for 循环创建它吗?我希望能够从数据库动态获取它。 - Dede Eli Permana
当然可以循环。 - Shivam Shukla
使用“for”循环到数据库的最后一个对象,并将其推送到数组中,您不需要为每个数据创建单独的变量。如果您正在从数据库中获取它,则将每行作为对象获取并将其推送到数组中,就这样。 - Shivam Shukla

0

首先,您需要先定义输入。您编写的结果只是对象数组。多维数组应该像这样:

const multidimensionalArray = [
  [1,2,3,4],
  [12,13,15,16],
  [17,2,31,]
]

针对您的问题,我假设您从后端接收数据:

const responseData = [{data1, data2, data3, data4}]

const result = responseData.map(item => {
   /// Do some manipulate data here
   const stypingObj = item.type ? styling1 : styling2 
   const valueArray = item.valueData  // You can manipulate value also
   return chartData = { ...item. data: valueArray, ...stylingObj }
})

然后它会返回您期望的结果。

0

请尝试这段代码,学习如何在JavaScript中推送多维数组

var PushToArray = { };
PushToArray.productID = productID;
PushToArray.itemColorTitle = itemProductTitle;
PushToArray.itemColorPath = itemProduct;
cookie_value_add.push(PushToArray);

我希望这段代码对你有用。

谢谢。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接