Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to use .map to add a new property to an array of objects

trying to use underscore.map to iterate over array of objects and add a boolean property to each object based on if the object value passes a truth statement.

var desserts = [
  {
    name: 'Chocolate Cake',
    ingredients: ['cocoa', 'flour', 'sugar', 'eggs', 'milk', 'butter' ],
    type: 'cake'
  },
  {
    name: 'Snickerdoodles',
    ingredients: ['flour', 'milk', 'butter', 'eggs', 'sugar', 'cinnamon', 'cream of tartar'],
    type: 'cookie'
  }, 

etc..

Heres what I have -

var glutenFree = function (desserts) {
  return _.map(desserts, function(dessert) {
    if (dessert.ingredients.includes('flour')) {
      return dessert.glutenFree = 'false';
    } else {
      return dessert.glutenFree = 'true';
    }
  });
};
like image 350
boshao13 Avatar asked Oct 23 '25 11:10

boshao13


1 Answers

No library needed:

const desserts = [{
    name: 'Chocolate Cake',
    ingredients: ['cocoa', 'flour', 'sugar', 'eggs', 'milk', 'butter'],
    type: 'cake'
  },
  {
    name: 'Snickerdoodles',
    ingredients: ['flour', 'milk', 'butter', 'eggs', 'sugar', 'cinnamon', 'cream of tartar'],
    type: 'cookie'
  }
];

const dessertsExtended = desserts.map(dessert => ({ ...dessert,
  glutenfree: !dessert.ingredients.includes('flour')
}));

console.log(dessertsExtended);
like image 147
connexo Avatar answered Oct 25 '25 02:10

connexo