per*_*ai1 5 javascript underscore.js ecmascript-6
我想找出如何采用下划线_.findWhere并将其转换为es6原生javascript?
_.findWhere($scope.template, {id: $scope.approveTemplate})
Run Code Online (Sandbox Code Playgroud)
Lim*_* H. 13
$scope.template.find(t => t.id === $scope.approveTemplate)
Run Code Online (Sandbox Code Playgroud)
虽然Lim的回答非常适合您发布的具体示例,但这个应该处理以下每个用例_.findWhere:
function myFindWhere(array, criteria) {
return array.find(item => Object.keys(criteria).every(key => item[key] === criteria[key]))
}
Run Code Online (Sandbox Code Playgroud)
它返回输入数组中的第一个项目,其中所有已定义的条件属性都匹配(或者undefined如果没有这样的项目),我认为这是合同_.findWhere.
以下是如何使用它来处理您的示例:
myFindWhere($scope.template, {id: $scope.approveTemplate})
Run Code Online (Sandbox Code Playgroud)
以下是我用来测试它的一些测试用例:
myFindWhere([{"a":0,"b":1},{"a":1},{"b":1}],{"a":0})
>对象{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})
>对象{a:0,b:1}
myFindWhere([{"a":0,"b":1},{"a":1},{"b":2}],{"b":2})
>对象{b:2}