我有一个websocket打开传递给我的数据,数据是一个包含时间戳(类型为Date)和价格(类型号)的对象。
*我需要在每分钟结束时访问最后一个价格。 *
所以我在Date上使用了.getMinute()方法,这会返回分钟。 例如,如果日期是2017-12-14T00:26:19.944Z,价格是19.99那么我会做一个这样的对象:{时间:26,价格:19.99}
然后我将其推送到一个数组并重复该过程...... ...所以我可以有一个像这样的数组:
[{time: 26, price: 19.99}, {time: 26, price: 17.99}, {time: 26, price: 22.45}, {time: 27, price: 25.21}]
我需要访问每个时间属性的最后价格 - 所以上面我需要访问22.45的价格并将其推入一个新的数组。
帮助表示感谢,谢谢。
答案 0 :(得分:1)
您可以利用objects
不能具有相同名称的重复属性这一事实。
请参阅下面的实例。
请注意使用reduce()
函数来覆盖object form
{time: price}
和后续map()
函数以返回到原始array form
[{time, price}..]
结果是array
仅包含每个latest price
的{{1}}。
minute
答案 1 :(得分:0)
也许像
let newArr = [timeArr[timeArr.lenght - 1].price]
or
otherArr.push(timeArr[timeArr.lenght - 1].price)
答案 2 :(得分:0)
最简单的方法就是返回数组值的最后一个元素
let lastPrice = data[data.length - 1].price;
以下示例
let data = [{time: 26, price: 19.99}, {time: 26, price: 17.99}, {time: 26, price: 22.45}, {time: 27, price: 25.21}]
let lastPrice = data[data.length - 1].price;
console.log(lastPrice);
答案 3 :(得分:0)
像这个简单的功能应该有用:
var getLatestTimestamp = function(arr){
var lastTimestamps = [];
var l = arr.length -1 ;
lastTimestamps.push(arr[l]);
for(var i = l; i > 0; i--){
if(lastTimestamps[lastTimestamps.length -1].time !== arr[i].time) {
lastTimestamps.push(arr[i]);
}
}
return lastTimestamps;
};
var arr = [
{time: 26, price: 19.99},
{time: 26, price: 17.99},
{time: 26, price: 22.45},
{time: 27, price: 25.21},
];
var distinctTimestamps = getLatestTimestamp(arr);
console.log(distinctTimestamps);
/*
[ { time: 27, price: 25.21 }, { time: 26, price: 22.45 } ]
*/