JavaScript数组中的访问位置,具有最后一个特定数字

时间:2017-12-14 00:33:47

标签: javascript arrays sorting datetime object

我有一个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的价格并将其推入一个新的数组。

帮助表示感谢,谢谢。

4 个答案:

答案 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 } ]
*/