实际上我有一个要转换的对象数组。
[
{ "val1":"2.0" },
{ "val2":"2.0" },
{ "val3":"2.0" },
{ "val1":"4.0" },
{ "val2":"2.0" },
{ "val3":"4.7" },
{ "val1":"4.0" },
{ "val2":"4.0" },
{ "val3":"4.0" }
]
我应该将每三个项目放入一个带有父项目的单独数组中。
我会将其转换为这种格式
[
[
"20190201",
[
{ "val1":"2.0" },
{ "val2":"2.0" },
{ "val3":"2.0" }
]
],
[
"20190202",
[
{ "val2":"2.0" },
{ "val3":"2.0" },
{ "val1":"4.0" }
]
]
]
其实这就是我的制作方法
const returnData= fileDateName.map((_fileDate: string, _index: number) => {
return [_fileDate, [
filteredData[_index],
filteredData[_index + 1],
filteredData[_index + 2],
]];
});
我的实际问题是我的输出不采用接下来的三个值,但每次它移动一项然后采用下一个值。我认为这是因为 _index
值没有按应有的方式增加。
Index =0
filteredData[0],
filteredData[1],
filteredData[2],
index=1
filteredData[1],
filteredData[2],
filteredData[3],
...
但迭代应该使
Index =0
filteredData[0],
filteredData[1],
filteredData[2],
index=3
filteredData[3],
filteredData[4],
filteredData[5],
...
编辑
FileDateName= ["20190201","20190202","20190203"]
如何在每次迭代时设置索引值?
最佳答案
您可以使用 Array#map 和 Array#slice 执行类似的操作。获取日期索引并将其乘以 3 即可找到应获取数据的起始位置。
const dates = [20190201, 20190202, 20190203]
const data=[{"val1":"2.0"},{"val2":"2.0"},{"val3":"2.0"},{"val1":"4.0"},{"val2":"2.0"},{"val3":"4.7"},{"val1":"4.0"},{"val2":"4.0"},{"val3":"4.0"}]
const res = dates.map((date, index)=>{
const start = index * 3;
const end = start + 3;
return [
date,
data.slice(start, end)
]
});
console.log(res);
关于javascript - 将对象数组转换为嵌套对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54672068/