问题描述
我正在尝试将变量值与纯 JavaScript 中的 API 响应进行匹配。为了匹配,我从响应中获取了静态索引,但稍后,可能会出现索引更改的情况。所以我有另一个存储确切位置的字段数组。
有没有办法用这个数组来匹配变量值? 这是两个数组的响应,一个是字段键,另一个是数据数组。
"fields":[
"date","energy","impact-e","lat","lat-dir","lon","lon-dir","alt","vel"
],"data":[
[
"2018-12-18 23:48:20","3133","49","56.9","N","172.4","E","26.0","13.6"
],[
"2020-12-22 23:23:33","489.8","9.5","31.9","96.2","35.5",....many more
]
我试图用来匹配数据的条件是:
if (
response[i][4] === latDir &&
response[i][6] === longDir &&
Number(response[i][3]) >= latMinVal &&
Number(response[i][3]) <= latMaxVal &&
Number(response[i][5]) >= longMinVal &&
Number(response[i][5]) <= longMaxVal
) {
// DO SOMETHING
}
有什么方法可以减少对数据数组索引的依赖,并使其在字段数组上可靠吗?
解决方法
类似的东西?
const infos =
{ fields:
[ 'date','energy','impact-e','lat','lat-dir','lon','lon-dir','alt','vel'],data:
[ [ '2018-12-18 23:48:20','3133','49','56.9','N','172.4','E','26.0','13.6'],[ '2020-12-22 23:23:33','489.8','9.5','31.9','96.2','35.5','13.6']
]
//,...
}
const kp = infos.fields.reduce((keysPairs,c,i)=>{keysPairs[c]=i; return keysPairs},{})
/*
kp =
{ 'date' : 0,'energy' : 1,'impact-e' : 2,'lat' : 3,'lat-dir' : 4,'lon' : 5,'lon-dir' : 6,'alt' : 7,'vel' : 8
}
*/
for (let response of infos.data)
{
if ( response[kp['lat-dir']] === latDir
&& response[kp['lon-dir']] === longDir
&& Number(response[kp['lat']]) >= latMinVal
&& Number(response[kp['lat']]) <= latMaxVal
&& Number(response[kp['lon']]) >= longMinVal
&& Number(response[kp['lon']]) <= longMaxVal
) {
// do something
}
// ...
}