You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何遍历Binance API返回的JSON数组并累加买卖盘数量

问题分析

你的代码存在几个关键错误:

  • 初始把bidsQuantity赋值为单个bid的数量字符串,而非数组,后续调用length和push都是错误操作
  • 循环条件用bidsQuantity.length完全不符合需求,应该遍历binanceTrade.bids数组的长度
  • 循环内部每次重置j=1,无法实现遍历所有bid项
  • 直接用push赋值给原变量,push返回的是数组新长度,会导致变量类型混乱
正确实现代码

首先,Binance API返回的bids和asks数组中,每一项的第二个元素是字符串格式的数量,需要先转为数值再累加。以下是正确的求和逻辑:

// 假设data是从Binance API获取的原始响应文本
const binanceTrade = JSON.parse(data);

// 计算所有bid的数量总和
let totalBidQuantity = 0;
for (const bid of binanceTrade.bids) {
  // 把字符串转成数值,累加
  totalBidQuantity += Number(bid[1]);
}

// 计算所有ask的数量总和
let totalAskQuantity = 0;
for (const ask of binanceTrade.asks) {
  totalAskQuantity += Number(ask[1]);
}

console.log("所有买单数量总和:", totalBidQuantity);
console.log("所有卖单数量总和:", totalAskQuantity);

或者用更简洁的数组reduce方法:

const binanceTrade = JSON.parse(data);

const totalBidQuantity = binanceTrade.bids.reduce((sum, bid) => sum + Number(bid[1]), 0);
const totalAskQuantity = binanceTrade.asks.reduce((sum, ask) => sum + Number(ask[1]), 0);

console.log("买单总量:", totalBidQuantity);
console.log("卖单总量:", totalAskQuantity);
关键说明
  • Binance返回数值为字符串是为了避免浮点精度丢失,所以必须用Number()或parseFloat()转换后再计算
  • 无论是for...of循环还是reduce方法,核心都是遍历整个bids/asks数组,逐个累加数量元素

内容的提问来源于stack exchange,提问作者CitronW

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 10:40:25