2016-03-26 5 views
0

次のjsonファイルが必要です。私の目標は、すべてnameを正しく見つけて、その値をname配列に追加することです。特定のプロパティを見つけて配列にプッシュ

var data = { 
    "Fruits": [{ 
    "name": "apple", 
    "added_date": "", 
    "expired_date": "" 
    }, { 
    "name": "orange", 
    "added_date": "", 
    "expired_date": "" 
    }, { 
    "name": "strawberry", 
    "added_date": "", 
    "expired_date": "" 
    }, { 
    "name": "banana", 
    "added_date": "", 
    "expired_date": "" 
    }], 
    "Meat": [{ 
    "name": "beef", 
    "added_date": "", 
    "expired_date": "" 
    }, { 
    "name": "chicken", 
    "added_date": "", 
    "expired_date": "" 
    }, { 
    "name": "fish", 
    "added_date": "", 
    "expired_date": "" 
    }, { 
    "name": "pork", 
    "added_date": "", 
    "expired_date": "" 
    }], 
    "Vegetable": [{ 
    "name": "cucumber", 
    "added_date": "", 
    "expired_date": "" 
    }, { 
    "name": "kale", 
    "added_date": "", 
    "expired_date": "" 
    }], 
    "Spice": [{ 
    "name": "cajun", 
    "added_date": "", 
    "expired_date": "" 
    }, { 
    "name": "garlic", 
    "added_date": "", 
    "expired_date": "" 
    }] 
}; 

私はこのようなことを考え出しましたが、pushの機能にエラーがあります。この問題を解決する良い方法はありますか?

var name = []; 
for (var key in data) { 
    for (var i = 0; i < data[key].length; i++) { 
    console.log(data[key][i].name); 
    name.push(data[key][i].name); 
    } 
} 
console.log(name); 
+0

値のみ文字列を取りwindow.nameプロパティをオーバーライドしようとしているグローバルスコープであるため、問題は、変数名nameですエラー? – csum

答えて

5

それはあなたが何であるか

var data = { 
 
    "Fruits": [{ 
 
    "name": "apple", 
 
    "added_date": "", 
 
    "expired_date": "" 
 
    }, { 
 
    "name": "orange", 
 
    "added_date": "", 
 
    "expired_date": "" 
 
    }, { 
 
    "name": "strawberry", 
 
    "added_date": "", 
 
    "expired_date": "" 
 
    }, { 
 
    "name": "banana", 
 
    "added_date": "", 
 
    "expired_date": "" 
 
    }], 
 
    "Meat": [{ 
 
    "name": "beef", 
 
    "added_date": "", 
 
    "expired_date": "" 
 
    }, { 
 
    "name": "chicken", 
 
    "added_date": "", 
 
    "expired_date": "" 
 
    }, { 
 
    "name": "fish", 
 
    "added_date": "", 
 
    "expired_date": "" 
 
    }, { 
 
    "name": "pork", 
 
    "added_date": "", 
 
    "expired_date": "" 
 
    }], 
 
    "Vegetable": [{ 
 
    "name": "cucumber", 
 
    "added_date": "", 
 
    "expired_date": "" 
 
    }, { 
 
    "name": "kale", 
 
    "added_date": "", 
 
    "expired_date": "" 
 
    }], 
 
    "Spice": [{ 
 
    "name": "cajun", 
 
    "added_date": "", 
 
    "expired_date": "" 
 
    }, { 
 
    "name": "garlic", 
 
    "added_date": "", 
 
    "expired_date": "" 
 
    }] 
 
}; 
 

 
var name = []; 
 
snippet.log('name value:' + name + ':' + typeof name + ':') 
 

 
var names = []; 
 
for (var key in data) { 
 
    for (var i = 0; i < data[key].length; i++) { 
 
    names.push(data[key][i].name); 
 
    } 
 
} 
 
snippet.log(names);
<!-- Provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 --> 
 
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>

+0

これは間違いありませんが、実際の問題は、OPがグローバルコンテキストで動作するコードを記述している理由です。ここで 'name'は特別な意味を持って定義されています。良い。 –

関連する問題