-1

I have array with objects:

[{name:'test', lastname: 'test', gender:'f'},{name:'test1', lastname: 'test1', gender:'m'},{name:'test2', lastname: 'test2', gender:'m'}]

How to get first (and only 1) object from array with genger: 'm'?

mgicrush
  • 53
  • 1
  • 1
  • 6

4 Answers4

2

You can use find

var ar = [{name:'test', lastname: 'test', gender:'f'},{name:'test1', lastname: 'test1', gender:'m'},{name:'test2', lastname: 'test2', gender:'m'}];

var result = ar.find(function(e) {
  return e.gender == 'm';
});

console.log(result)
Nenad Vracar
  • 118,580
  • 15
  • 151
  • 176
  • Note that `find` is not available in IE and lots of mobile browsers, as your link shows under 'Browser compatibility' – Jieter Jun 01 '16 at 08:57
0

Loop over your array and check if the item has gender == 'm' in each iteration. Could look like this:

function first_male(data) {
    for (var i = 0; i < data.length; i++) {
        if (data[i].gender == 'm') {
            return data[i];
        }
     }
}

var data = [
    {name:'test', lastname: 'test', gender:'f'},
    {name:'test1', lastname: 'test1', gender:'m'},
    {name:'test2', lastname: 'test2', gender:'m'}
];
first_male(data); // Object {name: "test1", lastname: "test1", gender: "m"}
Jieter
  • 4,101
  • 1
  • 19
  • 31
0

You could use Array#find

The find() method returns a value in the array, if an element in the array satisfies the provided testing function. Otherwise undefined is returned.

var array = [{name:'test', lastname: 'test', gender:'f'},{name:'test1', lastname: 'test1', gender:'m'},{name:'test2', lastname: 'test2', gender:'m'}];

console.log(array.find(a => a.gender ==='m'));

If not available, use polyfill. Or

var array = [{name:'test', lastname: 'test', gender:'f'},{name:'test1', lastname: 'test1', gender:'m'},{name:'test2', lastname: 'test2', gender:'m'}],
    element;

array.some(function (a) {
    if (a.gender === 'm') {
        element = a;
        return true;
    }
});
console.log(element);
Nina Scholz
  • 376,160
  • 25
  • 347
  • 392
0

You simply have to loop on your array. There is a very similar thread here : Find a value in an array of objects in Javascript The return instruction will break out of the loop when a corresponding object is found.

Community
  • 1
  • 1
Cheitan
  • 121
  • 2
  • 13