公式
サンプル
const obj = {
hoge: 'fuga',
foo: 'bar',
hogehoge: 'fuga'
}
// キーを会得する
const key = _.findKey(obj,function(value, key) {
return value === 'fuga'
});
// => findKeyには'hoge'が渡される
// おまけ: valueを会得する
obj[key]
// => 'fuga'
動作説明
_.findKey(object, [predicate=_.identity])
引数
-
object (Object)
: 検索したいオブジェクト -
[predicate=_.identity] (Function)
: 検索するための関数を渡す、findKeyはこの関数を用いてオブジェクト内を検索する
returnされる値
- 最初に一致した要素のキー
経緯
オブジェクト内で特定の値が入っているkeyを会得したいなと思い色々調べていた時に発見。最初はなんとなくこういう機能はJSに入っているだろうと思っていたけどまさか入っていないとは、、、結構ニッチな需要なのかな?
findKeyの内部コード
なるほどねー、Object.keys
でkeyを配列にしたあとArray.prototype.some
でvalueを会得、predicateで渡した関数を回して最初に合格した値を返すという訳ですね。蓋を開けるとシンプルだけど面白いなー。でもfindKey内でpredicateに第三引数としてobject渡しているのはなんでだろう?