JavaScript-从外部检索for循环内部生成的变量值
我正在使用一个rest API,它从同一个数据库中获取信息,但有两个不同的表: 表#1包含(输出包含以下对象的JSON结果): idJavaScript-从外部检索for循环内部生成的变量值,javascript,json,Javascript,Json,我正在使用一个rest API,它从同一个数据库中获取信息,但有两个不同的表: 表#1包含(输出包含以下对象的JSON结果): id 名称 类型 表2包含(输出包含以下对象的JSON结果): id 值(实时、定期更新) 我想做的是比较表1中的id,并将其与id 在表#2中,如果两个id的输出之间存在匹配,则表#2中所有具有相同id的值的(值)之和 到目前为止,我能做的是: File1.js require('File2.js'); for (a in metricsData){
名称
类型
表2包含(输出包含以下对象的JSON结果): id
值(实时、定期更新)
我想做的是比较表1中的id,并将其与id 在表#2中,如果两个id的输出之间存在匹配,则表#2中所有具有相同id的值的(值)之和 到目前为止,我能做的是: File1.js
require('File2.js');
for (a in metricsData){
var metricsID = metricsData[a].id;
}
/* Certainly the below code is not working, but I don't know if it should
be done this way or it can be much more better.
Can't get the values of both metricsID & idFromLoad
if(metricsID === idFromLoad) {
var sum += value;
console.log('The new sum is : '+sum)
} */
for(var i in load.updates){
var idFromLoad = load.updates[i].id;
var newVal = load.updates[i].value;
}
File2.js
require('File2.js');
for (a in metricsData){
var metricsID = metricsData[a].id;
}
/* Certainly the below code is not working, but I don't know if it should
be done this way or it can be much more better.
Can't get the values of both metricsID & idFromLoad
if(metricsID === idFromLoad) {
var sum += value;
console.log('The new sum is : '+sum)
} */
for(var i in load.updates){
var idFromLoad = load.updates[i].id;
var newVal = load.updates[i].value;
}
因此,最大的问题是如何在for循环之外获取metricsID和idFromLoad的值?有没有更好的方法来实现我的目标?你想要实现的目标有点让人困惑,但要回答本文标题中描述的问题 因为在循环中定义了变量,所以它只存在于循环中。如果要“记住”循环外部的值,则需要在外部定义它:
var metricsID;
for (a in metricsData){
metricsID = metricsData[a].id;
}
但是请注意,在循环之外,它的值将等于循环中最后一项的id
如果您正在寻找一种在两个表中查找值的简单方法,那么您可以做的是在每个表中循环一次,并创建一个与id无关的映射,以便可以轻松地基于id检索值
var updatesMap = {};
for(var i in load.updates){
var idFromLoad = load.updates[i].id;
updatesMap[idFromLoad] = load.updates[i].value;
}
然后在另一个循环中:
for (a in metricsData){
var metricsID = metricsData[a].id;
var updateValue = updatesMap[meticsID]; //this is the value from the other table
}