2016-05-18 28 views

cevap

5

Lim's answer yayınlanan belirli örneğin büyük olsa da, bu bir _.findWhere her usecase ele olmalıdır:

function myFindWhere(array, criteria) { 
    return array.find(item => Object.keys(criteria).every(key => item[key] === criteria[key])) 
} 

Tüm tanımlanmış olan giriş diziden ilk öğeyi döndürür kriterlerin özellikleri _.findWhere sözleşmesi olduğuna inanıyorum (ya da böyle bir öğe yoksa undefined), eşleşti. 0:

myFindWhere($scope.template, {id: $scope.approveTemplate}) 

Ve burada bunu test etmek için kullanılan bir kaç test durumu vardır:

myFindWhere ([{ "a"

İşte örnek işlemek için nasıl kullanılacağını var "B": 1}, { "a": 1}, { "B": 1}], { "a": 0})
> nesne {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})
> Nesne {a: 0, b: 1}
myFindWhere ([{"a": 0, "b": 1}, {"a": 1}, {"b": 2}], {"b": 2})
> Nesne {b: 2}

11
$scope.template.find(t => t.id === $scope.approveTemplate) 
+0

Bunun nasıl çalıştığını açıklayabilir misiniz? – maskedbacon

+0

@maskedbacon [find() 'yönteminin belgelerine bakın] (https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/find). Temel olarak, yöntem, hangi dizi elemanının aramayla eşleştiğini belirleyen bir geri arama işlevini alır. Bu örnekte geri arama bir [ES6 ok fonksiyonu] olarak tanımlanmıştır (https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Functions/Arrow_functions). – Boaz