Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我想要以下格式的数据_Javascript_Arrays_Sorting - Fatal编程技术网

Javascript 我想要以下格式的数据

Javascript 我想要以下格式的数据,javascript,arrays,sorting,Javascript,Arrays,Sorting,我正在使用一些API&我设法按以下顺序格式化数据: 数据采用这种格式 从上述数据中,我希望按此顺序提取点属性。 输出要求如下: 当我开始工作时,我知道我需要帮助。由于我是这个领域的新手,我想寻求一些帮助 我尝试过: const required = data.map((_, index) => { return { series: { data: data.slice(0, index + 1).map(i => [i[0].point[0], i[0].po

我正在使用一些API&我设法按以下顺序格式化数据:
数据采用这种格式

从上述数据中,我希望按此顺序提取点属性。
输出要求如下:

当我开始工作时,我知道我需要帮助。由于我是这个领域的新手,我想寻求一些帮助

我尝试过:

const required = data.map((_, index) => {
  return {
    series: {
      data: data.slice(0, index + 1).map(i => [i[0].point[0], i[0].point[1]])
    }
  }
})
我能够得到每个数组的第一个元素。我无法确定是否包含所有元素。这是因为我使用了I[0]。由于缺乏经验,我无法循环。
我得到的输出:


使用索引,如传递索引而不是0
i[index]

我想您需要
map
这里:

let required = data.map(series => ({
    'series': {
        'data': series.map(i => [parseInt(i.point[0]), parseInt(i.point[1])]) // parseInt to convert the strings into numbers
    }
}))

// we use this to add [[3, 4], ...] to the second series [[9, 10], ...].
// To be exactly: it makes that every series includes the previous ones.
required.forEach((_, index) => {
    if (index == 0) return 
    
    required[index].series.data = [...required[index - 1].series.data, ...required[index].series.data]
})
var数据=[{“点”:[“3”,“4”],},{“点”:[“5”,“6”],},{“点”:[“7”,“8”],},[{“点”:[“9”,“10”],},{“点”:[“11”,“12”],},{“点”:[“13”,“14”],},{“点”:[“15”,“16”],}];
var result=data.map(k=>k.map(l=>l.point.map(Number)).map((k,i,self)=>[…(self[i-1]??[]),…k]).map(k=>({series:{data:k}]);

控制台日志(结果)此处提供的其他答案似乎将序列数组表示为字符串之一。 您所需的输出将它们清楚地显示为数字,而不是表示它们的字符串。下面的代码执行转换

“严格使用”;
window.addEventListener('load',onload,false)
功能已加载(evt){
var结果=data.map(func);
控制台日志(结果);
函数func(el、索引、集合){
设tmpResult={
系列:{
数据:[]
}
};
el.forEach(pointFunc);
函数pointFunc(pointObj){
tmpResult.series.data.push(pointObj.point.map(el=>parseFloat(el));
}
返回tmpResult;
}
}
常数数据=[
[{
“要点”:[
"3",
"4"
],
},
{
“要点”:[
"5",
"6"
],
},
{
“要点”:[
"7",
"8"
],
},
],
[{
“要点”:[
"9",
"10"
],
},
{
“要点”:[
"11",
"12"
],
},
{
“要点”:[
"13",
"14"
],
},
{
“要点”:[
"15",
"16"
],
},
]

];使用
map
flatMap
对象。值将简化

const convert=(数据)=>
data.map((arr)=>({series:{data:arr.flatMap(Object.values)}]);
常数数据=[
[
{
“要点”:
[
"3",
"4"
],
},
{
“要点”:
[
"5",
"6"
],
},
{
“要点”:
[
"7",
"8"
],
},
],
[
{
“要点”:
[
"9",
"10"
],
},
{
“要点”:
[
"11",
"12"
],
},
{
“要点”:
[
"13",
"14"
],
},
{
“要点”:
[
"15",
"16"
],
},
]
];
console.log(转换(数据))
const required = data.map((_, index) => {
  return {
    series: {
      data: data.slice(0, index + 1).map(i => [i[0].point[0], i[0].point[1]])
    }
  }
})
[
    {
        series: {
            data: [[3,4]]
        }
    },
    {
        series: {
            data: [[3,4],[9,10]]
        }
    },
]
let required = data.map(series => ({
    'series': {
        'data': series.map(i => [parseInt(i.point[0]), parseInt(i.point[1])]) // parseInt to convert the strings into numbers
    }
}))

// we use this to add [[3, 4], ...] to the second series [[9, 10], ...].
// To be exactly: it makes that every series includes the previous ones.
required.forEach((_, index) => {
    if (index == 0) return 
    
    required[index].series.data = [...required[index - 1].series.data, ...required[index].series.data]
})