w3resource

JavaScript: Get the first key that satisfies the provided testing function

JavaScript fundamental (ES6 Syntax): Exercise-236 with Solution

Write a JavaScript program to get the first key that satisfies the provided testing function. Otherwise  return undefined.

  • Use Object.keys(obj) to get all the properties of the object, Array.prototype.find() to test each key-value pair using fn.
  • The callback receives three arguments - the value, the key and the object.

Sample Solution:

JavaScript Code:

//#Source https://bit.ly/2neWfJ2 
const findKey = (obj, fn) => Object.keys(obj).find(key => fn(obj[key], key, obj));

console.log(findKey(
  {
    barney: { age: 36, active: true },
    fred: { age: 40, active: false },
    pebbles: { age: 1, active: true }
  },
  o => o['active']
));

Sample Output:

barney

Flowchart:

flowchart: Get the first key that satisfies the provided testing function.

Live Demo:

See the Pen javascript-basic-exercise-236-1 by w3resource (@w3resource) on CodePen.


Improve this sample solution and post your code through Disqus

Previous: Write a JavaScript program to get the last key that satisfies the provided testing function, otherwise undefined is returned.
Next: Write a JavaScript program to generate an array, containing the Fibonacci sequence, up until the nth term.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



JavaScript: Tips of the Day

Checking if a key exists in a JavaScript object?

Checking for undefined-ness is not an accurate way of testing whether a key exists. What if the key exists but the value is actually undefined?

var obj = { key: undefined };
obj["key"] !== undefined // false, but the key exists!

You should instead use the in operator:

"key" in obj // true, regardless of the actual value

If you want to check if a key doesn't exist, remember to use parenthesis:

!("key" in obj) // true if "key" doesn't exist in object
!"key" in obj   // ERROR!  Equivalent to "false in obj"

Or, if you want to particularly test for properties of the object instance (and not inherited properties), use hasOwnProperty:

obj.hasOwnProperty("key") // true

Checking for undefined-ness is not an accurate way of testing whether a key exists. What if the key exists but the value is actually undefined? var obj = { key: undefined }; obj["key"] !== undefined // false, but the key exists! You should instead use the in operator: "key" in obj // true, regardless of the actual value If you want to check if a key doesn't exist, remember to use parenthesis: !("key" in obj) // true if "key" doesn't exist in object !"key" in obj // ERROR! Equivalent to "false in obj" Or, if you want to particularly test for properties of the object instance (and not inherited properties), use hasOwnProperty: obj.hasOwnProperty("key") // true For performance comparison between the methods that are in, hasOwnProperty and key is undefined.

Ref: https://bit.ly/2CFNp1X