比较值并添加匹配数组

时间:2015-11-05 13:23:29

标签: javascript

我试图合并2中的2个数据源,我想循环遍历它们,如果一个specefic值匹配,则将它添加到具有相同值的第一个对象,并在emty数组中添加已经存在的数据。无论我有多少物品。

所以我想说我有这个信息

来源1

 for(var i = 0 ; i < two.persons.length; i++) {
    if (one.teams[i].rooms == two.persons[i].room) {
            data.teams[i].members.push(two.persons[i]);
        }
 }

来源2

try {

    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    Connection con = DriverManager.getConnection("jdbc:odbc:DDS_DSN");
    Statement st = con.createStatement();
    ResultSet rs;

    rs = st.executeQuery("SELECT source_port FROM request_dns WHERE destination_port = 53");
    while ( rs.next() ) {
        String source_port = rs.getString("source_port");
        System.out.println(source_port);
    }
    con.close();
} catch (Exception e) {
    System.out.println(e);

}

我想要的是,如果'房间和房间'值匹配,'people'数组会合并到成员数组。

我认为是类似的东西:

String x = "53";
try
{
.
.
rs = st.executeQuery("SELECT source_port FROM request_dns WHERE destination_port = x");
.
.
}

3 个答案:

答案 0 :(得分:2)

您可以使用更高阶的方法:

&#13;
&#13;
two.persons.forEach(function(person) {
    one.teams.forEach(function(team) {
        if (team.rooms == person.room) {
            team.members.push(person);
        }
    });
});
&#13;
&#13;
&#13;

答案 1 :(得分:1)

您的代码的问题在于,一旦您迭代two数组,那么您就不会返回并查看前一个元素是否与当前元素匹配。

例如,如果每个数组上的[0]不匹配,并且您在for循环中迭代到索引[1],则无法检查two[1]是否匹配{ {1}}。

要进行完整搜索,您可以直接为one[0]的每个值迭代数组:

two

答案 2 :(得分:1)

有很多策略可以做到这一点。但最重要的是你应该分别迭代每个数组。我会使用Array.forEach();

one.teams.forEach(function (team, teamsIndex, teamsArray) {
  two.persons.forEach(function (person, personsIndex, personsArray) {
    if (team.room == person.room) {
       // Do what you need to do.
    }
  });
});

没有检查语法,所以要注意阅读Array.forEach();文档。