私はアンダースコア_.findWhere
を取り、それをes6 native javascriptに変換する方法を探していますか?アンダースコアのes6相当findWhere
_.findWhere($scope.template, {id: $scope.approveTemplate})
私はアンダースコア_.findWhere
を取り、それをes6 native javascriptに変換する方法を探していますか?アンダースコアのes6相当findWhere
_.findWhere($scope.template, {id: $scope.approveTemplate})
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}
$scope.template.find(t => t.id === $scope.approveTemplate)
どうすればいいですか? – maskedbacon
@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