norrisollie
norrisollie

Reputation: 331

Iterating through an array containing objects using a function and a parameter

I'd like to create a function that iterates through an array containing separate objects with name, surname and age properties. The function should take a parameter "name" and return the name, surname and age in the console.

How would I do this? I've looked at some other questions but can't seem to figure out how to do it. I've created this so far...

var people = [
  { name: "Sue", surname: "Beckett", age: 50},
  { name: "Bill", surname: "Borough", age: 44},
  { name: "Janet", surname: "Jupp", age: 23},
  { name: "Peter", surname: "Pepper", age: 21},
  { name: "Samantha", surname: "Salad", age: 17}
];


function person(name) {
  // code here
}

person(sue)

Upvotes: 0

Views: 71

Answers (5)

mrid
mrid

Reputation: 5796

Using filter:

var people = [
    { name: "Sue", surname: "Beckett", age: 50},
    { name: "Bill", surname: "Borough", age: 44},
    { name: "Janet", surname: "Jupp", age: 23},
    { name: "Peter", surname: "Pepper", age: 21},
    { name: "Samantha", surname: "Salad", age: 17}
];


function person(personName) {
    var user = people.filter(function (user) {
       return (user.name.toLowerCase() == personName.toLowerCase());
    });
    return user[0] !== undefined ? user[0] : 'not found';
}


console.log(person('sue'));

Upvotes: 0

Nina Scholz
Nina Scholz

Reputation: 386560

You could filter the array by checking the lower case value of name property and name variable.

function person(name) {
    people
        .filter(o => o.name.toLowerCase() === name.toLowerCase())
        .forEach(({ name, surname, age}) => {
            console.log('name:', name);
            console.log('suname:', surname);
            console.log('age:', age);
        });
}

var people = [{ name: "Sue", surname: "Beckett", age: 50 }, { name: "Bill", surname: "Borough", age: 44 }, { name: "Janet", surname: "Jupp", age: 23 }, { name: "Peter", surname: "Pepper", age: 21 }, { name: "Samantha", surname: "Salad", age: 17 }];

person('sue');

Upvotes: 0

cнŝdk
cнŝdk

Reputation: 32145

Simply use Array#find() method like this:

function person(name) {
  return people.find(function(p) {
    return p.name == name;
  });
}
console.log(person("Samantha"));

Demo:

var people = [{
    name: "Sue",
    surname: "Beckett",
    age: 50
  },
  {
    name: "Bill",
    surname: "Borough",
    age: 44
  },
  {
    name: "Janet",
    surname: "Jupp",
    age: 23
  },
  {
    name: "Peter",
    surname: "Pepper",
    age: 21
  },
  {
    name: "Samantha",
    surname: "Salad",
    age: 17
  }
];

function person(name) {
  return people.find(function(p) {
    return p.name == name;
  });
}
console.log(person("Samantha"));
console.log(Object.values(person("Samantha")));

Note:

  • Make sure you pass the name as a string when you call your method, passing just sue without "" will assume you have a variable called sue.
  • Note that you can use Object.values() to show only the values of the object properties, instead of the whole object.

Simply write :

console.log(Object.values(person("Samantha")));

Upvotes: 2

FyZ1K
FyZ1K

Reputation: 80

var people = [
  { name: "Sue", surname: "Beckett", age: 50},
  { name: "Bill", surname: "Borough", age: 44},
  { name: "Janet", surname: "Jupp", age: 23},
  { name: "Peter", surname: "Pepper", age: 21},
  { name: "Samantha", surname: "Salad", age: 17}
];
    
    
function person(name) {
  for (var key in people) {
    var person = people[key];
    if (name === person.name) {
      console.log(person);
    }
  }
}

person("Sue"); // string always needs quotes: " or ' character

Upvotes: 0

Ken Ha
Ken Ha

Reputation: 127

var people = [
  { name: "Sue", surname: "Beckett", age: 50},
  { name: "Bill", surname: "Borough", age: 44},
  { name: "Janet", surname: "Jupp", age: 23},
  { name: "Peter", surname: "Pepper", age: 21},
  { name: "Samantha", surname: "Salad", age: 17}
];


function person(name) {
  people.map((data,index)=>{
    if(data.name == name)
    {
      console.log(data.name);
      console.log(data.surname);
      console.log(data.age);
      return;
    }
  })
}

person("Sue");

Upvotes: -1

Related Questions