json文件中的搜索循环
Search loop in json files
我有两个json文件:house和people。我想找到所有住在房子里的人。这是我的json文件:
房屋:
{
"HOUSES": {
"1": {
"NAME": "House1",
"ID": 1
},
"2": {
"NAME": "House2",
"ID": 2
},
"3": {
"NAME": "House3",
"ID": 3
}
}
}
人员:
{
"PEOPLE": {
"1": {
"NAME": "People1",
"HOUSE_ID": 1
},
"2": {
"NAME": "People2",
"HOUSE_ID": 2
},
"3": {
"NAME": "People3",
"HOUSE_ID": 2
}
}
}
我想列出所有与他家有关的人。把House2的所有人都列出来。结果将是People2和People3。
我试着做了两个循环:
//var houses and var peoples are the json files.
for(var i in houses){
console.log(houses[i]);
if(peoples.HOUSE_ID == houses[i].ID){
for(var j in peoples){
console.log(peoples[j].HOUSE_ID);
}
}
}
循环不希望在if语句中输入。我该怎么办?
谢谢。
编辑:这里是两个console.log()
:的结果
HOUSE_ID : { name: 'House1',
id: 1 }
People id { NAME: 'People1',
HOUSE_ID: 1 }
People id { NAME: 'People2',
HOUSE_ID: 2 }
People id { NAME: 'People3',
HOUSE_ID: 2 }
HOUSE_ID : { name: 'House2',
id: 2 }
People id { NAME: 'People1',
HOUSE_ID: 1 }
People id { NAME: 'People2',
HOUSE_ID: 2 }
People id { NAME: 'People3',
HOUSE_ID: 2 }
HOUSE_ID : { name: 'House3',
id: 3 }
People id { NAME: 'People1',
HOUSE_ID: 1 }
People id { NAME: 'People2',
HOUSE_ID: 2 }
People id { NAME: 'People3',
HOUSE_ID: 2 }
您不需要嵌套循环,只需要一个用于人的键,另一个用于获取名称。
使用的方法:
-
Object.keys
获取对象的所有自己的属性名称 -
Array#filter
过滤项目并只返回想要的 -
Array#map
为每个元素返回一个新值
var data = { "HOUSES": { "1": { "NAME": "House1", "ID": 1 }, "2": { "NAME": "House2", "ID": 2 }, "3": { "NAME": "House3", "ID": 3 } }, "PEOPLE": { "1": { "NAME": "People1", "HOUSE_ID": 1 }, "2": { "NAME": "People2", "HOUSE_ID": 2 }, "3": { "NAME": "People3", "HOUSE_ID": 2 } } },
result = Object.keys(data.PEOPLE).filter(function (k) {
return data.PEOPLE[k].HOUSE_ID === 2;
}).map(function (k) {
return data.PEOPLE[k].NAME;
});
console.log(result);
编辑:
让所有的人和他们的房子。
var data = { "HOUSES": { "1": { "NAME": "House1", "ID": 1 }, "2": { "NAME": "House2", "ID": 2 }, "3": { "NAME": "House3", "ID": 3 } }, "PEOPLE": { "1": { "NAME": "People1", "HOUSE_ID": 1 }, "2": { "NAME": "People2", "HOUSE_ID": 2 }, "3": { "NAME": "People3", "HOUSE_ID": 2 } } };
Object.keys(data.PEOPLE).forEach(function (k) {
console.log(data.PEOPLE[k].NAME + ': ' + data.HOUSES[data.PEOPLE[k].HOUSE_ID].NAME);
});
如果我正确理解任务,这里的解决方案是:
var houses = {
"1": {
"NAME": "House1",
"ID": 1
},
"2": {
"NAME": "House2",
"ID": 2
},
"3": {
"NAME": "House3",
"ID": 3
}
};
var peoples = {
"1": {
"NAME": "People1",
"HOUSE_ID": 1
},
"2": {
"NAME": "People2",
"HOUSE_ID": 2
},
"3": {
"NAME": "People3",
"HOUSE_ID": 2
}
};
for (var i in houses){
console.log('List of people in ' + houses[i].NAME + ':');
for(var j in peoples){
if ( houses[i].ID === peoples[j].HOUSE_ID ){
console.log(peoples[j].NAME);
}
}
}
条件houses[i].ID === peoples[j].HOUSE_ID
检查当前的人是否住在房子里,并将他们的名字记录在控制台中。
相关文章:
- Javascript在数组中循环搜索字符
- 在二维数组中搜索比嵌套循环更有效的方法
- 将基于 cheerio 的搜索循环添加到节点简单爬网器中
- 搜索后循环浏览数组
- 谷歌表格循环搜索字符串并清除相邻单元格
- 使用过多的 for() 循环在数组中搜索匹配项的替代方法
- JavaScript 循环字母表与搜索词
- 循环并搜索localStorage中的所有项目
- 对于循环搜索ID's的Javascript
- 从json文件循环并搜索,然后通过jquery和json获取值
- 什么'我的JavaScript搜索递归循环有问题
- 为什么我不能通过循环数组来搜索UserAgent的值
- 使用jQuery循环浏览twitter搜索JSON
- 在循环中搜索字符串中的字符
- Getjson和.each()函数.需要搜索/循环在第二层
- 循环jstree以搜索节点id的所有出现,然后更改这些节点的类
- 搜索字符串查找名称,并使用for循环记录每次出现的名称
- jQueryajax成功页面中的搜索框-循环中的问题
- json文件中的搜索循环
- 通过循环访问数组来搜索文档中的关键字