Hannan
Hannan

Reputation: 1191

Javascript how to loop over the object to pick up selected items

I want to loop over the data object and pick two items i.e. year and revenue from it and put it into a new object

var data [{"year": 2014, "revenue": 20000, "costs": 10000, "hours": 50}, {"year": 2015, "revenue": 30000, "costs": 20000, "hours": 54}, {"year": 2016, "revenue": 30000, "costs": 10000, "hours": 40}]

var pickedData = {};

data.forEach(output)

function output(d) {
     Object.assign({}, pickedData.Year = d.year),
     Object.assign({}, pickedData.Revenue = d.revenue)
}

The code works but assign only the last item in data to the new object pickedData which means it is looping it over but not assigning value to the object everytime it goes through. How can I have output like this:

console.log(pickedData)
 [{Year: 2014, Revenue: 20000}, {Year: 2015, Revenue: 30000}, {Year: 2016, Revenue: 30000}]

Upvotes: 1

Views: 368

Answers (3)

Nenad Vracar
Nenad Vracar

Reputation: 122047

You can use map() method instead and return new array as result.

var data = [{"year": 2014, "revenue": 20000, "costs": 10000, "hours": 50}, {"year": 2015, "revenue": 30000, "costs": 20000, "hours": 54}, {"year": 2016, "revenue": 30000, "costs": 10000, "hours": 40}]

var result = data.map(({year, revenue}) => ({year, revenue}));
console.log(result)

Upvotes: 2

joopmicroop
joopmicroop

Reputation: 921

var data = [{"year": 2014, "revenue": 20000, "costs": 10000, "hours": 50}, {"year": 2015, "revenue": 30000, "costs": 20000, "hours": 54}, {"year": 2016, "revenue": 30000, "costs": 10000, "hours": 40}];

var pickedDate = data.map(function(v,i,a){
  var retObj={};
  if(v.year) retObj.year = v.year;
  if(v.revenue != undefined) retObj.revenue=v.revenue;
  return retObj;
})

console.log(pickedDate);

Upvotes: 0

n30n0v
n30n0v

Reputation: 24

var pickedData = data.map(item => {
  return {
    Year: item.year,
    Revenue: item.revenue
  }
})

Upvotes: 1

Related Questions