Sto cercando di scoprire come proverò il carattere di sottolineatura _.findWhere
e lo trasformerò in javascript nativo di es6?es6 equivalente di underscore findWhere
_.findWhere($scope.template, {id: $scope.approveTemplate})
Sto cercando di scoprire come proverò il carattere di sottolineatura _.findWhere
e lo trasformerò in javascript nativo di es6?es6 equivalente di underscore findWhere
_.findWhere($scope.template, {id: $scope.approveTemplate})
Mentre Lim's answer è grande per l'esempio specifico che hai postato, questo dovrebbe gestire ogni caso d'uso di _.findWhere
:
function myFindWhere(array, criteria) {
return array.find(item => Object.keys(criteria).every(key => item[key] === criteria[key]))
}
Restituisce il primo elemento della matrice di ingresso per la quale tutti definiti le proprietà dei criteri sono abbinate (o undefined
se non esiste tale elemento), che a mio avviso è il contratto di _.findWhere
.
Ecco come usarlo per gestire il tuo esempio:
myFindWhere($scope.template, {id: $scope.approveTemplate})
E qui ci sono un banco di prova alcuni ho usato per provarlo:
myFindWhere ([{ "a": 0, "b": 1}, {"a": 1}, {"b": 1}], {"a": 0})
> Oggetto {a: 0, b: 1}
myFindWhere ([ {"a": 0, "b": 1}, {"a": 1}, {"b": 1}], {"b": 0})
> undefined
myFindWhere ([{"a": 0, "b": 1}, {"a": 1}, {"b": 1}], {"b": 1})
> Oggetto {a: 0, b: 1}
myFindWhere ([{"a": 0, "b": 1}, {"a": 1}, {"b": 2}], {"b": 2})
> Oggetto {b: 2}
$scope.template.find(t => t.id === $scope.approveTemplate)
Puoi spiegare come funziona? – maskedbacon
@maskedbacon Vedere la [documentazione del metodo 'find()'] (https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/find). In sostanza, il metodo accetta una funzione di callback che determina quale elemento dell'array corrisponde alla ricerca. In questo esempio la callback è definita come [funzione freccia ES6] (https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Functions/Arrow_functions). – Boaz