Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript-从外部检索for循环内部生成的变量值_Javascript_Json - Fatal编程技术网

JavaScript-从外部检索for循环内部生成的变量值

JavaScript-从外部检索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){

我正在使用一个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)
    } */
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循环之外获取metricsIDidFromLoad的值?有没有更好的方法来实现我的目标?

你想要实现的目标有点让人困惑,但要回答本文标题中描述的问题

因为在循环中定义了变量,所以它只存在于循环中。如果要“记住”循环外部的值,则需要在外部定义它:

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
}