Skip to content Skip to sidebar Skip to footer

Js: Handle With Find() Property Undefined

I have a method which returns a value from an element in the array. Not all the elements have the property I want to return. I would like to do this function with one line using th

Solution 1:

You seem to have the general idea, Array.prototype.find will search the array for the first element which, when used as an argument of the callback, will have the callback return a truthy value. If nothing is found, it returns undefined.

Your code should work, but yes, one way to do it in one line (if you want) is to use:

getExecsFromTour(tourId){
  return (this.repInfo.find(el => el.id == tourId) || {}).execs || [];
}

If Array.prototype.find returns undefined, the first inner parenthetical expression will be evaluated to empty object, which can attempt (and fail) to access the .execs key without a TypeError, which will also evaluate to undefined, in which case the function returns empty array, which is what your code above does.

EDIT: Someone commented this solution already, lol, but as the comments say, nothing wrong with keeping it multiline (more readable that way).

Solution 2:

what about

getExecsFromTour(tourId){
     returnthis.repInfo.find(el =>'execs'in el && el.id == tourId ).execs || [];
}

...

EDITED

var a = [{execs : 1, id:4}, {id:5}];
functiongetExecsFromTour(tourId, x){
    return (x = a.find(el =>'execs'in el && el.id == tourId )) ? x.execs : [];
}

this time at least I ran it couple of times

Post a Comment for "Js: Handle With Find() Property Undefined"