Stackoverflowに関する多くの質問、ブログ、ドキュメントを読んだ後でも、アレイに対するこの特定の反復が機能しない理由を理解できません。
jQueryとjavascript(明らかに)を使用してGeoJSONファイルをプルし、結果のオブジェクトのプロパティを調べて、目的のキーと値のペアをプルしています。それらのペアを見つけたら、別の配列オブジェクトに挿入します。オブジェクトは期待どおりに作成されますが、新しく作成されたオブジェクトを調べようとしても何も起こらず、その長さを見つけようとすると、長さ0が返されます。
これは私がレコードを引っ張るところです:
_recordsFromGeoJSON: function(inputText) {
var retRecords = {},
$.getJSON(this.GeoJSONUrl, function(data) {
var geoJSONdata = data;
$.each(geoJSONdata.features, function(fkey, fvalue) {
$.each(fvalue.properties, function(pkey, pvalue) {
var re = new RegExp(inputText, "i");
var retest = re.test(pvalue);
if (retest) {
retRecords[pvalue] = fvalue.geometry.coordinates;
return;
}
});
});
});
return retRecords;
},
これは、新しいオブジェクトに対する相互作用のコードです。
for(var key in this._retRecords) {
//this function will never run
var always = foo(bar);
}
いくつかのサンプルGeoJSON:
{
"type": "FeatureCollection",
"features": [
{ "type": "Feature", "id": 0, "properties": { "NAME": "14 PARK PLACE PH 4", "AREAID": 3.0, "STR12M": 0.0, "CLS12M": 6.0, "STR4M": 0.0, "CLS4M": 0.0, "TOTAL": 164.0, "OCC": 112.0, "NFU": 0.0, "UNC": 3.0, "DVL": 49.0, "UDVL": 0.0 }, "geometry": { "type": "Point", "coordinates": [ -93.27512816536759, 37.044305883435001 ] } }
,
{ "type": "Feature", "id": 1, "properties": { "NAME": "ALPHA MEADOWS NORTH", "AREAID": 8.0, "STR12M": 0.0, "CLS12M": 0.0, "STR4M": 0.0, "CLS4M": 0.0, "TOTAL": 12.0, "OCC": 0.0, "NFU": 0.0, "UNC": 0.0, "DVL": 0.0, "UDVL": 0.0 }, "geometry": { "type": "Point", "coordinates": [ -92.839131163095786, 37.119205483765143 ] } }
]
}
Chromeレポートにconsole.log(this._retRecords);
、データセットから期待したすべてのプロパティを含むオブジェクトが表示されると、次のようになります。
Object
14 PARK PLACE PH 4: Array[2]
0: -93.27512816536759
1: 37.044305883435
length: 2
__proto__: Array[0]
ALPHA MEADOWS NORTH: Array[2]
0: -92.839131163095786
1: 37.119205483765143
length: 2
__proto__: Array[0]
この質問で与えられた両方の方法を使用すると、長さが0になります。
私は基本的な何かが欠けていると確信していますが、それが何であるかを見つけることができません。どんな助け、批判、代替方法も素晴らしいでしょう!