我希望了解如何使用下划线_.findWhere
并将其转换为es6原生javascript?
_.findWhere($scope.template, {id: $scope.approveTemplate})
答案 0 :(得分:12)
malloc
答案 1 :(得分: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," b":1},{" a":1},{" b&# 34;: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}