Reputation: 566
I am trying to loop through an object and get the values of the properties using two for loops.
var fakeData = {
"manufacturer": "tesla",
"cars": [
{"title": "CALI", "name": "CALI", "type": "string" },
{"title": "TEXAS", "name": "TEXAS", "type": "string" },
{"title": "NY", "name": "NY", "type": "string" }
],
"usedCars": [
{"title": "FL", "name": "FL", "type": "string" }
],
}
let carTitles=[];
for (title of fakeData.cars)
carTitles.push(title);
for (key of fakeData.usedCars)
carTitles.push(key);
console.log('cars as string are:', carTitles.join(','));
I get the output as expected, but was wondering if there is a better way to do this which would prevent using two for loops. Any suggestions? (thanks for the help earlier @cybercoder)
Upvotes: 0
Views: 49
Reputation: 5428
You can achieve this by concatenating the arrays and using map:
var fakeData = {
"manufacturer": "tesla",
"cars": [
{"title": "CALI", "name": "CALI", "type": "string" },
{"title": "TEXAS", "name": "TEXAS", "type": "string" },
{"title": "NY", "name": "NY", "type": "string" }
],
"usedCars": [
{"title": "FL", "name": "FL", "type": "string" }
],
}
const carTitles = [...fakeData.cars, ...fakeData.usedCars].map(car => car.title);
console.log('cars as string are:', carTitles.join(','));
If you want to keep the for ... of
loop, you can also write it like this:
var fakeData = {
"manufacturer": "tesla",
"cars": [
{"title": "CALI", "name": "CALI", "type": "string" },
{"title": "TEXAS", "name": "TEXAS", "type": "string" },
{"title": "NY", "name": "NY", "type": "string" }
],
"usedCars": [
{"title": "FL", "name": "FL", "type": "string" }
],
}
const allCars = [...fakeData.cars, ...fakeData.usedCars];
const carTitles = [];
for (let car of allCars) {
carTitles.push(car.title);
}
console.log('cars as string are:', carTitles.join(','));
Upvotes: 1