javascript - Javascript将数组值加在一起
问题描述
我从 API 中获取一些值并将它们添加到可以正确显示的数组中。
var total = [points, rebounds, assists, steals, blocks, tov]
但是我想将数组中的值加在一起并将它们的总和显示为输出,但是使用+
运算符只是将每个值附加到最后一个的末尾。我已经在网站上搜索并尝试了一堆解决方案,但parseInt
似乎会抛出UnhandledPromiseRejectionWarning: RangeError
任何帮助之类的东西将不胜感激。
下面的代码:
var express = require('express')
var fetch = require('isomorphic-fetch')
var app = express()
async function nbaFetch(){
let result = await fetch('https://stats.nba.com/stats/playerdashboardbygeneralsplits?DateFrom=&DateTo=&GameSegment=&LastNGames=0&LeagueID=00&Location=&MeasureType=Base&Month=0&OpponentTeamID=0&Outcome=&PORound=0&PaceAdjust=N&PerMode=Totals&Period=0&PlayerID=201935&PlusMinus=N&Rank=N&Season=2018-19&SeasonSegment=&SeasonType=Regular+Season&ShotClockRange=&Split=general&VsConference=&VsDivision=', {
mode: 'cors',
method: "GET", // *GET, POST, PUT, DELETE, etc.
headers: {
"accept-encoding": "Accepflate, sdch",
"accept-language": "he-IL,he;q=0.8,en-US;q=0.6,en;q=0.4",
"cache-control": "max-age=0",
connection: "keep-alive",
host: "stats.nba.com",
referer: "http://stats.nba.com/",
"user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36"
},
})
let nbaFileStruct = await result.json()
return nbaFileStruct
}
app.use('/', async function (req, res, next) {
let result = await nbaFetch().catch(error => console.log(error))
// Grab all the values i want and add the fantasy multipliers
var points = (JSON.stringify(result.resultSets[0].rowSet[0][26]))*1
var rebounds = (JSON.stringify(result.resultSets[0].rowSet[0][18]))*1.5
var assists = (JSON.stringify(result.resultSets[0].rowSet[0][19]))*1.5
var tov = (JSON.stringify(result.resultSets[0].rowSet[0][20]))*-2
var steals = (JSON.stringify(result.resultSets[0].rowSet[0][21]))*2
var blocks = (JSON.stringify(result.resultSets[0].rowSet[0][22]))*2
// Add multiplied results into a single array
var total = [points, rebounds, assists, steals, blocks, tov]
//Add array values together
// Send result to client
res.send(total)
})
app.listen(3001, console.log("I'm a server and I am listening on port 3001"))
解决方案
首先,将值解析为一个数字 - 然后使用reduce
将它们相加:
var points = parseInt(JSON.stringify(result.resultSets[0].rowSet[0][26]))*1
var rebounds = parseInt(JSON.stringify(result.resultSets[0].rowSet[0][18]))*1.5
var assists = parseInt(JSON.stringify(result.resultSets[0].rowSet[0][19]))*1.5
var tov = parseInt(JSON.stringify(result.resultSets[0].rowSet[0][20]))*-2
var steals = parseInt(JSON.stringify(result.resultSets[0].rowSet[0][21]))*2
var blocks = parseInt(JSON.stringify(result.resultSets[0].rowSet[0][22]))*2
var total = [points, rebounds, assists, steals, blocks, tov]
var sum = total.reduce((acc, curr) => acc + curr, 0);
//Do something with sum
推荐阅读
- html - 如何在引导代码中更改元素的宽度
- python - 每 20 个字符后添加换行符并将结果另存为新字符串
- reactjs - 需要帮助来修改我的受保护路线的反应代码
- c# - 为什么我的 serial.write 发送数据两次
- r - 加入并匹配 R 中的两个数据框
- python - 在 python 运行时创建变量
- javascript - Svelte“未捕获的 TypeError:无法在 'HTMLProgressElement' 上设置 'value' 属性”
- python - AttributeError: 'list' 对象没有属性 'hist'
- c++ - 如何使用 isalpha 检查 C++ 中的字符串中是否有特殊字符?
- python - Python - 元组列表,在这种情况下具有相同第一个值的元组总和?