如何拆分 JavaScript 多维数组并获取最后一个数组?
Posted
技术标签:
【中文标题】如何拆分 JavaScript 多维数组并获取最后一个数组?【英文标题】:How to split JavaScript mult-dimension array and get last array? 【发布时间】:2021-07-25 02:31:39 【问题描述】:我有一个包含以下时间序列数据的数组。如何将数组拆分为 60 毫秒(不大于)的间隔并获取最后一个数组?
[
[1619932533,1781.85],
[1619932540,1781.72],
[1619932554,1781.99],
[1619932559,1783.84],
[1619932564,1783.02],
[1619932567,1780.38],
[1619932571,1780.52],
[1619932577,1780.38],
[1619932580,1783.07],
[1619932581,1782.17],
[1619932581,1782.17],
[1619932601,1782.95],
[1619932612,1782.7],
[1619932614,1782.82],
[1619932626,1782.82],
[1619932653,1784.12],
.....
]
我需要这样的最终数据吗?
[
[1619932533,1781.85],
[1619932581,1782.17],
[1619932653,1784.12]
]
*根据第一个值 1619932533 和 +60 进行拆分,然后继续......
【问题讨论】:
请添加您尝试过的代码。添加一个循环,将当前值与循环中的上一项和输出中的最后一项进行比较。 第一次是17:58:52.533
,最后一次是17:58:52.653
- 它们之间没有60秒。你的意思是毫秒?
@mplungjan 1619932533 + 60
是 1619932593
。该范围内的最大数字是1619932581
。
【参考方案1】:
请尝试使用此代码。
var myObj, curr_time;
myObj = [[1619932533,1781.85],
[1619932540,1781.72],
[1619932554,1781.99],
[1619932559,1783.84],
[1619932564,1783.02],
[1619932567,1780.38],
[1619932571,1780.52],
[1619932577,1780.38],
[1619932580,1783.07],
[1619932581,1782.17],
[1619932581,1782.17],
[1619932601,1782.95],
[1619932612,1782.7],
[1619932614,1782.82],
[1619932626,1782.82],
[1619932653,1784.12]];
curr_time = myObj[0][0];
var result = [];
result.push(myObj[0])
for (i = 1; i < myObj.length; i++)
if (myObj[i][0] - curr_time > 60)
result.push(myObj[i]);
curr_time = myObj[i][0];
console.log('result', result);
【讨论】:
【参考方案2】:也许是这个?我只得到两个相隔 60 毫秒的结果
const data = [
[1619932533,1781.85],
[1619932540,1781.72],
[1619932554,1781.99],
[1619932559,1783.84],
[1619932564,1783.02],
[1619932567,1780.38],
[1619932571,1780.52],
[1619932577,1780.38],
[1619932580,1783.07],
[1619932581,1782.17],
[1619932581,1782.17],
[1619932601,1782.95],
[1619932612,1782.7],
[1619932614,1782.82],
[1619932626,1782.82],
[1619932653,1784.12]
]
const times = data.reduce((acc,arr) =>
const [d,val] = arr;
if (acc.length===0) acc.push(arr)
else if (d - acc[acc.length-1][0] >= 60) acc.push(arr)
return acc
,[])
console.log(times)
【讨论】:
如果d - acc[acc.length-1][0] >= 60
,您需要获取data[i-1]
并将其推送到输出(您必须使用第三个i
参数来减少回调)
为什么? acc[acc.length-1] 包含数据中最后保存的值
条件正确。需要推送到acc
的项是data
数组中的前一项。
对不起,我不明白。请发布您自己的答案以根据您显示正确的值。我刚刚醒来,所以也许我太困了以上是关于如何拆分 JavaScript 多维数组并获取最后一个数组?的主要内容,如果未能解决你的问题,请参考以下文章