好吧,我正在使用一个从同一个数据库中获取信息的rest API,但有两个不同的表:
表#1包含(输出包含以下对象的JSON结果):
id
名称
类型
表#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)
} */
File2.js
for(var i in load.updates){
var idFromLoad = load.updates[i].id;
var newVal = load.updates[i].value;
}
所以,最大的问题是如何获得 metricsID 和&的价值。 for循环之外的 idFromLoad ?有没有更好的方法来实现我想要做的事情?
答案 0 :(得分:0)
你想要完成的事情有点令人困惑,但要回答这篇文章标题中描述的问题......
因为你在循环中定义了变量,所以它只存在于循环中。如果你想“记住”循环之外的值,你需要在外面定义它:
var metricsID;
for (a in metricsData){
metricsID = metricsData[a].id;
}
但请注意,在循环外,它的值将等于循环中最后一项的id。
如果您正在寻找一种在两个表中查找值的简单方法,您可以做的就是遍历每个表并创建一个键入id的映射,以便您可以根据id轻松检索值。 / p>
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
}