Javascript将数组中的现有对象更新为最新添加的对象

时间:2018-03-07 07:23:43

标签: javascript arrays json data-manipulation array-filter

我有来自websocket的以下数据格式:

{
   "open":3581.7228390197174,
   "last":"19372.91592032353582908399403095245361328125",
   "high":10036.924161117426,
   "low":53750.85165594209,
   "volume":4885294,
   "timestamp":"1519709400000",
   "close":19372.915920323536
}

有几百个来自websocket我现在正在做的是当我收到一条消息时我将它推送到数组所以我收集了数据在1分钟间隔内的日期/时间的所有内容,并且有可能我可以在当前分钟收到10个数据,这意味着相同的时间戳,所以我需要更新集合中的现有数据,这样就不会重复这就是我现在尝试的那个

var currentMinute = [];
var parsedData = JSON.parse(r.data);

parsedData.date = moment.utc(parseInt(parsedData.timestamp)).local();
parsedData.open = +parsedData.open;
parsedData.close = +parsedData.last;
parsedData.high = +parsedData.high;
parsedData.low = +parsedData.low;
parsedData.volume = +parsedData.volume;

dataArray.push(parsedData);

dataArray.sort((a, b) => {
  return a.date.valueOf() - b.date.valueOf();
});

var lastData = dataArray[dataArray.length - 1];

if (lastData.timestamp === parsedData.timestamp) {
  lastData.close = +parsedData.close;
  currentMinute.push(parsedData);
} else {
  var lastDataOfMinute = currentMinute[currentMinute.length - 1];
  currentMinute = [];
}

我打算做的是比较我在ws中收到的所有数据集合中的最后一个数据,然后将其推送到当前分钟的集合,然后如果另一个数据带有不同的时间戳,我将创建最后一个数据那个分钟变量与当前分钟数组中的最后一个数据然后清除数组然后循环到该过程但我不能让它工作我不知道我是否正确地做任何帮助将是真正的赞赏。

0 个答案:

没有答案