Reputation: 3137
I have to the following json file. My goal is to find all name
properly and add its value to name array.
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": ""
}]
};
I came up with something like this, but give me error on push
function. Is there a better way to solve this problem?
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);
Upvotes: 0
Views: 52
Reputation: 388316
The problem is the variable name name
, since it is in the global scope you are trying to override the window.name
property which takes only string values
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>
Upvotes: 5