迭代node.js中的json文件

我正在编写这段代码,从json文件中find"types" : [ "locality", "political" ]的长名"types" : [ "locality", "political" ]"types" : [ "administrative_area_level_2", "political" ]长名"types" : [ "administrative_area_level_2", "political" ] 。 但无法正确地遍历数组

js文件

 var request = require('request'); request('http://maps.googleapis.com/maps/api/geocode/json?latlng=23.6519148,87.13857650000001', function(error, response, data) { if (!(!error && response.statusCode == 200)) { console.log('error! '); return; } data = JSON.parse(data); for (var i in data.results) { for (var j in data.results[i]) { if (j == 'address_components') { console.log('found') console.log(data.results[i][j][1]); console.log(data.results[i][j][2]); for (var k in data.results[i]){ if(k == 'long_name') console.log('found') } console.log('not found') } } break; } }); 

产量

 found { long_name: 'Kunustoria', short_name: 'Kunustoria', types: [ 'locality', 'political' ] } { long_name: 'Bardhaman', short_name: 'Bardhaman', types: [ 'administrative_area_level_2', 'political' ] } not found 

用这个replace你的for循环

 data = JSON.parse(data).results; data.forEach(function (address) { console.log(address['address_components'][0].long_name); }); 

首先你必须安装lodash。

npm install – 保存lodash

 var _ = require('lodash'); var data = api_response_from_google_maps;//Assign the api response here. var addrs = []; _.map(data.results, function (address) { _.map(address.address_components, function (item) { if (_.isEqual(item.types, ["locality", "political"]) || _.isEqual(item.types, ["administrative_area_level_1", "political"])) { addrs.push(item); } }) }); console.log(JSON.stringify(addrs)); 

这给出了一个adresses_components对象的数组,其types与您指定的数组一样。