我有一个打开的 websocket 向我传递数据,数据是一个包含时间戳(日期类型)和价格(数字类型)的对象。
* 我需要在每分钟结束时访问最新价格。 *
所以我在日期上使用了 .getMinute() 方法,它返回分钟。 例如,如果日期是 2017-12-14T00:26:19.944Z 并且价格是 19.99 那么我会制作一个这样的对象:{time: 26, price: 19.99}
然后我将其推送到一个数组,然后重复该过程... ...所以我可以有一个像这样的数组:
[{time: 26, price: 19.99}, {time: 26, price: 17.99}, {time: 26, price: 22.45}, {time: 27, price: 25.21}]
我需要访问每个时间属性的最后价格 - 所以上面我需要访问 22.45 的价格并将其插入一个新数组。
感谢帮助,谢谢。
最佳答案
您可以利用 objects
不能有重复的同名属性。
请参阅下面的实际示例。
注意 reduce()
的使用函数达到object form
{time: price}
和随后的map()
返回原来的函数array form
[{时间,价格}..]
。
结果是一个数组
,仅包含每分钟
的最新价格
。
// Original Data.
const data = [{time: 26, price: 19.99}, {time: 26, price: 17.99}, {time: 26, price: 22.45}, {time: 27, price: 25.21}]
// Object Form.
const unique = data.reduce((accumulator, point) => ({...accumulator, [point.time]: point.price}), {})
// Array Form.
const array = Object.keys(unique).map((time) => ({time, price: unique[time]}))
// Result.
console.log('Object Form', unique) // Object Form.
console.log('Array Form', array) // Array Form.
关于javascript - 使用特定数字的最后一个访问 JavaScript 数组中的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47804212/