Selina452
Selina452

Reputation: 33

Access elements of Array of Objects

I have an array of objects:

const guests = [
               { id: 1, rsvp: true },
               { id: 2, rsvp: false },
               { id: 3, rsvp: true  },
               { id: 4, rsvp: false }
             ];

I would like to write a function which selects only the objects corresponding to IDs (guests) who have rsvp'd.

function selectGuests(guests, id) {
  list.forEach(function(id) {
    if(id.true) {
      push.SelectGuests();
    }
});

  return selectGuests;
}

however, I am getting gibberish results.

Any help on this one or points in the right direction would be appreciated!

Cheers!

Upvotes: 3

Views: 84

Answers (3)

Ali Faris
Ali Faris

Reputation: 18592

using forEach

function selectGuests(guests) 
{
    let result = [];
    guests.forEach(function (guest) {
        if (guest.rsvp) {
            result.push(guest);
        }
    });

    return result;
}

const guests = [
    { id: 1, rsvp: true },
    { id: 2, rsvp: false },
    { id: 3, rsvp: true  },
    { id: 4, rsvp: false }
];

let a = selectGuests(guests);
console.log(a);

or simpler using filter method

const guests = [
    { id: 1, rsvp: true },
    { id: 2, rsvp: false },
    { id: 3, rsvp: true  },
    { id: 4, rsvp: false }
];

let a = guests.filter(function(item){return item.rsvp});
console.log(a);

Upvotes: 1

Ahmed Eid
Ahmed Eid

Reputation: 4804

here is a simplified version without using es6 features.

function selectGuests(guests) {
  var selectedGuests = []
  // forEach gets the array elements (one by one) as first param 
  guests.forEach(function(guest) {
    if(guest.rsvp) {
      selectedGuests.push(guest)
    }
  })
  return selectedGuests
}

// call it as follows 
selectGuests(guests)

Upvotes: 0

Sajeetharan
Sajeetharan

Reputation: 222522

Use array.filter()

DEMO

 const guests = [
               { id: 1, rsvp: true },
               { id: 2, rsvp: false },
               { id: 3, rsvp: true  },
               { id: 4, rsvp: false }
];

var result = guests.filter(t=>t.rsvp);
console.log(result);

Upvotes: 3

Related Questions