diff --git a/snippets/findKey.md b/snippets/findKey.md new file mode 100644 index 000000000..96d563f83 --- /dev/null +++ b/snippets/findKey.md @@ -0,0 +1,14 @@ +### findKey + +Returns the first key that satisfies the provided testing function. Otherwise `undefined` is returned. + +Use `Object.keys(obj)` to get all the properties of the object, `Array.find()` to test the provided function for each key-value pair. The callback receives three arguments - the value, the key and the object. + +```js +const findKey = (obj, fn) => + Object.keys(obj).find(key => fn(obj[key], key, obj)); +``` + +```js +findKey({barney: { age: 36, active: true }, fred: { age: 40, active: false }, pebbles: { age: 1, active: true }}, o => o['active']); // 'barney' +``` diff --git a/snippets/findLastKey.md b/snippets/findLastKey.md new file mode 100644 index 000000000..dcaed6232 --- /dev/null +++ b/snippets/findLastKey.md @@ -0,0 +1,14 @@ +### findLastKey + +Returns the last key that satisfies the provided testing function. Otherwise `undefined` is returned. + +Use `Object.keys(obj)` to get all the properties of the object, `Array.reverse()` to reverse their order and `Array.find()` to test the provided function for each key-value pair. The callback receives three arguments - the value, the key and the object. + +```js +const findLastKey = (obj, fn) => + Object.keys(obj).reverse().find(key => fn(obj[key], key, obj)); +``` + +```js +findKey({barney: { age: 36, active: true }, fred: { age: 40, active: false }, pebbles: { age: 1, active: true }}, o => o['active']); // 'pebbles' +``` diff --git a/tag_database b/tag_database index 17a08401f..85c99fe29 100644 --- a/tag_database +++ b/tag_database @@ -47,7 +47,9 @@ extendHex:utility,string factorial:math,recursion fibonacci:math,array filterNonUnique:array +findKey:object,function findLast:array +findLastKey:object,function flatten:array flip:adapter,function forEachRight:array,function