我试图合并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");
.
.
}
答案 0 :(得分:2)
您可以使用更高阶的方法:
two.persons.forEach(function(person) {
one.teams.forEach(function(team) {
if (team.rooms == person.room) {
team.members.push(person);
}
});
});
&#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();文档。