js数组如何累加

问题描述

要把一个数组中的内容展示到界面中去

通过websocket接口推送的数据,每秒返回一条(取名content),content数据如下:

{ 
    "channel": "market.trades", 
    "data": { 
        "market": "2", 
        "type": 1, 
        "price": 48.83, 
        "num": 0.1, 
        "time": 1559272494000
     }
}

我要取的数据是data里的数据,希望能把它累加到一个数组里去,然后再展示到界面,希望结果如下:

[
    { "market": "2", "type": 10, "price": 59.03, "num": 0.1, "time": 1559273366000},
    { "market": "2", "type": 12, "price": 89.03, "num": 0.2, "time": 1559273377000},
    { "market": "2", "type": 13, "price": 79.03, "num": 0.3, "time": 1559273388000}
]

问题出现的环境背景及自己尝试过哪些方法

尝试过定义空数组newArr,然后push,可是这样不行,每次newArr.push(content.data),
但是这个newArr每次内容都只是一条,返回的这一条是最新的数据

你期待的结果是什么?实际看到的错误信息又是什么?

希望取得累加的数据,并只获取最新的十条信息展示到界面

[
    { "market": "2", "type": 10, "price": 59.03, "num": 0.1, "time": 1559273366000},
    { "market": "2", "type": 12, "price": 89.03, "num": 0.2, "time": 1559273377000},
    { "market": "2", "type": 13, "price": 79.03, "num": 0.3, "time": 1559273388000},
    ......
]
//取最新的十条填入界面中
阅读 4.7k
2 个回答

你看看你是在哪里定义的空数组。。别每次请求到数据就定义一下,那样就存不到之前的数据了。

你只取最新的十条信息展示,那是不是说明就是最新的10s所接收到的数据,然后将这些数据添加到一个数组中去?定义一个空数组并push是没错的,只不过你用错了方式,你应该在接口之外,也许你的websocket我们就假定是一个函数,有一个作用域。类似结构如下:

   //最外面定义一个数组,用于存储接收的数据
   var result = [];
   async function connectWebSocket(){
      //这里是你接收数据的逻辑
      //当你获取到数据之后,就push一次
      result.push(content.data);
   }
   connectWebSocket().then(() => {
        //这里就是你取最新十条数据并渲染到页面中去的逻辑,但是你要在10s之后,可以做一个延迟
   })
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题