[英]es6 equivalent of underscore findWhere
我想知道如何采用下划线_.findWhere
并将其转换为es6原生javascript?
_.findWhere($scope.template, {id: $scope.approveTemplate})
$scope.template.find(t => t.id === $scope.approveTemplate)
虽然Lim的答案对于您发布的具体示例很有用,但是这个应该处理_.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,“b”:1},{“a”:1},{“b”:1}],{“a”:0})
>对象{a:0,b:1}
myFindWhere([{“a”:0,“b”:1},{“a”:1},{“b”:1}],{“b”:0})
>未定义
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}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.