繁体   English   中英

es6相当于下划线findWhere

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM