javascript - Nuxt.js 代码在从数组计算数据时给出 NaN 错误
问题描述
我有用于计算来自在 nuxt 环境中工作的给定数组的订单的代码。我创建了 3 个函数,每个函数都从数组中计算一个数字,如果我使用 console.log 第一个函数,它会给我一个真实的结果,但连接到它的其他函数计算类似,但是当我把它们放到 console.log 时,它们给了 Nan错误。(数组以字符串格式出现)
我已经尝试 parseFloat() 到每个可能的地方,但控制台再次出现 Not a Number 错误
const express = require('express')
const axios = require('axios')
const consola = require('consola')
const { Nuxt, Builder } = require('nuxt')
const app = express()
// Import and Set Nuxt.js options
const config = require('../nuxt.config.js')
config.dev = !(process.env.NODE_ENV === 'production')
let loopInterval = null
async function start() {
// Init Nuxt.js
const nuxt = new Nuxt(config)
const { host, port } = nuxt.options.server
// Build only in dev mode
if (config.dev) {
const builder = new Builder(nuxt)
await builder.build()
} else {
await nuxt.ready()
}
// Add this part
app.get('/start', (req, res) => {
codeLoop()
res.send('My code loop started.')
})
app.get('/stop', (req, res) => {
clearInterval(loopInterval)
loopInterval = null
res.send('My code loop stopped')
})
// Give nuxt middleware to express
app.use(nuxt.render)
// Listen the server
app.listen(port, host)
consola.ready({
message: `Server listening on http://${host}:${port}`,
badge: true
})
}
start()
let UsdtTrySell = [["5.45","400"],["5.44","400"],["5.43","400"]];
let BtcUsdtSell = [["3900","1"],["3905","1"],["3910","1"]];
let btcTryBuy = [["21000","1"],["20950","1"],["20900","1"]];
let UsdtOrder = 1000;
function runMyCode() {
consola.log('hello')
}
function codeLoop() {
runMyCode()
loopInterval = setInterval(async () => {
function SellUsdtTryAtBtrk() {
let inputOrder1 = UsdtOrder
let sum = 0
let i = 0
for (i = 0; i < parseFloat(UsdtTrySell.length); i++) {
if (parseFloat(UsdtTrySell[i][1]) < inputOrder1) {
sum += UsdtTrySell[i][0] * UsdtTrySell[i][1]
inputOrder1 -= parseFloat(UsdtTrySell[i][1])
} else {
return sum + inputOrder1 * parseFloat(UsdtTrySell[i][0])
}
}
return ''
}
function BuyBtcTryAtBtrk() {
let inputOrder2 = SellUsdtTryAtBtrk
let sum1 = 0
let i = 0
for (i = 0; i < (parseFloat(btcTryBuy.length)); i++) {
if ( parseFloat(btcTryBuy[i][0]) * parseFloat(btcTryBuy[i][1]) <
parseFloat(inputOrder2)) {
sum1 += parseFloat(btcTryBuy[i][1])
inputOrder2 -= parseFloat(btcTryBuy[i][0]) *
parseFloat(btcTryBuy[i][1])
} else {
return sum1 + parseFloat(inputOrder2) /
parseFloat(btcTryBuy[i][0])
}
}
return ''
}
function SellBtcUsdtAtBnnc() {
let inputOrder3 = BuyBtcTryAtBtrk
// const BtcUsdtSell = bnncBtcusdt.bids
let sum = 0
let i = 0
for (i = 0; i < (parseFloat(BtcUsdtSell.length)); i++) {
if (parseFloat(BtcUsdtSell[i][1]) < inputOrder3) {
sum += BtcUsdtSell[i][0] * BtcUsdtSell[i][1]
inputOrder3 -= parseFloat(BtcUsdtSell[i][1])
} else {
return sum + inputOrder3 * parseFloat(BtcUsdtSell[i][0])
}
}
return ''
}
console.log(SellBtcUsdtAtBnnc());
}, 2 * 1000) // Runs every 2 seconds
}
解决方案
您将inputOrder2
and分配inputOrder3
给函数,而不是将它们分配给调用函数的结果。
更改此行:
let inputOrder2 = SellUsdtTryAtBtrk
...对此:
let inputOrder2 = SellUsdtTryAtBtrk();
...并更改此行:
let inputOrder3 = BuyBtcTryAtBtrk
...对此:
let inputOrder3 = BuyBtcTryAtBtrk();
...它应该工作。
推荐阅读
- django - 如何根据 Django 中传递的路径在 Class-Base-View 中创建逻辑模板和模型
- android - 从与 google play 不同的存储库安装更新
- node.js - Node.js 应用程序在本地工作,但在部署到 Docker 容器时无法工作
- python - 在 Python 中的时间范围内重新采样
- node.js - “错误:9 FAILED_PRECONDITION:找不到匹配的索引。” 查询一处房产
- plotly - 为什么我的绘图图像无法在 dash 应用程序上正确显示
- android - xamarin android中的Webview html音频播放器
- typescript - 接口 VPC Endpoint 使用 CDK 时在没有任何子网的情况下创建
- amazon-web-services - 限制 VPC 内的 IAM 用户
- laravel-backpack - 在 Laravel Backpack 中编辑相关子模型