Meus objetos:
[
{
description: 'object1', id: 1
},
{
description: 'object2', id: 2
}
{
description: 'object3', id: 3
}
{
description: 'object4', id: 4
}
]
Na minha função abaixo, estou passando a descrição para encontrar o ID correspondente:
function pluckSavedView(action, view) {
console.log('action: ', action);
console.log('pluckSavedView: ', view); // view = 'object1'
var savedViews = retrieveSavedViews();
console.log('savedViews: ', savedViews);
if (action === 'delete') {
var delete_id = _.result(_.find(savedViews, function(description) {
return description === view;
}), 'id');
console.log('delete_id: ', delete_id); // should be '1', but is undefined
}
}
Estou tentando usar o método de localização do lodash: https://lodash.com/docs#find
No entanto, minha variável delete_id
está saindo indefinida.
Atualização para as pessoas que consultam esta pergunta, o Ramda é uma boa biblioteca para fazer a mesma coisa que o lodash faz, mas de uma maneira mais funcional para a programação :) http://ramdajs.com/0.21.0/docs/
javascript
arrays
lodash
Leon Gaban
fonte
fonte
_.find
passaria magicamente apenas uma das propriedades para o retorno de chamada. Um simplesconsole.log(description)
retorno de chamada poderia ter lhe dito isso.Respostas:
O argumento passado para o retorno de chamada é um dos elementos da matriz. Os elementos da sua matriz são objetos do formulário
{description: ..., id: ...}
.Outra alternativa dos documentos aos quais você vinculou (lodash v3):
Lodash v4:
fonte
var delete_id = _.result(_.find(savedViews, { 'description': view }), 'id');
também mais 10 minutos ..._.find(savedViews, ['description', view])
lodash e ES5
lodash e ES6
documentos em https://lodash.com/docs#find
fonte
Você pode fazer isso facilmente no JS vanilla:
Usando
find
Usando
filter
(resposta original)fonte
[0]
esta é a solução que eu estou indo comvar delete_id = _.result(_.find(savedViews, { 'description': view }), 'id');
Obrigado pela demonstração tho +1savedViews.find(el => el.description === view)
Com o
find
método, seu retorno de chamada receberá o valor de cada elemento, como:Assim, você deseja um código como:
fonte
para isso, encontre o objeto especificado em uma matriz, um exemplo básico de uso de _.find
isso funcionaria bem
_.find ajudará a retornar um elemento em uma matriz, e não o índice. Portanto, se você possui uma matriz de objetos e deseja encontrar um único objeto na matriz com um determinado valor-chave, pare _.find é a ferramenta certa para o trabalho.
fonte
Você não precisa de Lodash, Ramda ou qualquer outra dependência extra.
Basta usar a função find () do ES6 de maneira funcional:
Às vezes, você precisa usar bibliotecas de terceiros para obter todos os benefícios que vêm com eles. No entanto, de um modo geral, tente evitar dependências quando não precisar delas . Dependências podem:
fonte
fonte
Você pode usar o seguinte
Em seguida, retorne o objeto inteiro (não apenas sua chave ou valor) da lista com o seguinte:
fonte
Importar
lodash
usandofonte
Buscar ID com base no nome
fonte