Aprenda Lodash: _.find, encontre um valor em um array ou objeto

De acordo com a documentação do lodash, _.find itera pelos elementos de uma coleção e retorna o primeiro elemento para o qual o predicado retorna um valor truthy. O predicado é chamado com três argumentos: (value, index|key, collection).

Argumentos

  • collection (Array ou Object): A coleção a ser inspecionada.
  • [predicate=_.identity] função, objeto, array ou string
  • [fromIndex=0] (number): O índice a partir do qual a busca será realizada.

Recrie o _.find do lodash usando JavaScript puro.

A diferença entre o _.find do lodash e o método find do JavaScript é que o método do JavaScript só pode ser aplicado a arrays e só pode receber uma função de callback, como esta: array.find(d => d.isTheBest). O método find do lodash pode ser chamado tanto com arrays quanto com objetos e pode receber uma função, um objeto ou um array, que ele usa para realizar a busca.

Assim:

_.find(array, {isTheBest: true})

_.find(array, "isBest")

_.find(array, ["isBest", true])

Exemplos

var users = [
  { "user": "barney",  "age": 36, "active": true },
  { "user": "fred",    "age": 40, "active": false },
  { "user": "pebbles", "age": 1,  "active": true }
]

find(users, function(o) { return o.age < 40; }) ➞ object for "barney"

find(users, { "age": 1, "active": true }) ➞ object for "pebbles"

find(users, ["active", false]) ➞ object for "fred"

find(users, "active") ➞ object for "barney"

Notas

  • Não tente importar o lodash; você está simplesmente escrevendo sua própria versão.
  • Toda esta série de desafios pode ser encontrada aqui.