2016-05-18 6 views

答えて

5

Lim's answerは、あなたが投稿具体的な例のための素晴らしいですが、これは_.findWhereのすべてのユースケースを処理する必要があります

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

それはすべてが定義されている入力配列から最初の項目を返します。基準の特性が一致しているか(またはそのような項目がない場合はundefined)、これは_.findWhereの契約と考えられます。

ここではあなたの例を処理するためにそれを使用する方法は次のとおりです。

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

そして、ここでは、私はそれをテストするために使用されるいくつかのテストケースです:

myFindWhere([{ "A":0、
>オブジェクト{a:0、b:1}
myFindWhere([b:1]、{"a":1}、{"b" {"a":0、 "b":1}、{"a":1}、{"b":0})
>未定義
myFindWhere([{"a":0、 "b":1}、{"a":1}、{"b":1})
>オブジェクト{a: 0、b:1}
myFindWhere([{"a":0、 "b":1}、{"a":1}、{"b":2}]、{"b":2})
>オブジェクト{b:2}

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

どうすればいいですか? – maskedbacon

+0

@maskedbacon [find()メソッドのドキュメント](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/find)を参照してください。基本的に、このメソッドは、どの配列要素が検索と一致するかを決定するコールバック関数を取ります。この例では、コールバックは[ES6矢印関数](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Functions/Arrow_functions)として定義されています。 – Boaz