如何在没有键的情况下访问对象内部的数组

how to access array inside object without keys

我有一个 JSON 数据,如下所示:

 {
  "chart":[
     [
        1627776011000,
        28
     ],
     [
        1627776371000,
        38
     ],
     [
        1627776731000,
        48
     ],
     ...
    ]
}

我想在 Chart.js 中使用此数据,其中 1627776011000 ... x 轴值,28 ... y 轴值。

我知道我可以用数组来做到这一点 push

const myArr = JSON.parse(dataJSON);

const data = []; 
const labels = [];

myArr.chart.forEach((item) => {
    labels.push(item[0]);
    data.push(item[1]);
});

但是否有更好的方法,例如 map?

您可以调用两次 map():

const labels = myArr.chart.map(el => el[0]);
const data = myArr.chart.map(el => el[1]);

在我看来,这就像是一个虚构的问题。

如果您的数据点只是 x 和 y 值,那么说第一个数组元素是 x,第二个是 y 并没有错。

有些人会争辩说您应该将其设为具有 xValueyValue 等属性的对象。

但是,无论哪种情况,任何优势或劣势都是微不足道的。您可以想象有人说对象版本更具可读性。 javascript 运行时(至少 V8)更难优化对象版本:https://v8.dev/blog/elements-kinds

除非你测量过,而且它很重要,否则没关系。

您可以按如下方式使用.reduce()

const myArr = {
  "chart":[
     [
        1627776011000,
        28
     ],
     [
        1627776371000,
        38
     ],
     [
        1627776731000,
        48
     ]
    ]
};

const [labels, data] = myArr.chart.reduce((acc,cur) => [
    [...acc[0], cur[0]],
    [...acc[1],cur[1]]],
[[],[]]);
console.log( labels, data );