如何在没有键的情况下访问对象内部的数组
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 并没有错。
有些人会争辩说您应该将其设为具有 xValue
和 yValue
等属性的对象。
但是,无论哪种情况,任何优势或劣势都是微不足道的。您可以想象有人说对象版本更具可读性。 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 );
我有一个 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 并没有错。
有些人会争辩说您应该将其设为具有 xValue
和 yValue
等属性的对象。
但是,无论哪种情况,任何优势或劣势都是微不足道的。您可以想象有人说对象版本更具可读性。 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 );