es6 相当于下划线 findWhere

es6 equivalent of underscore findWhere

我正在寻找如何将下划线 _.findWhere 转换为 es6 原生 javascript?

_.findWhere($scope.template, {id: $scope.approveTemplate})
$scope.template.find(t => t.id === $scope.approveTemplate)

虽然 非常适合您发布的特定示例,但这个应该处理 _.findWhere 的每个用例:

function myFindWhere(array, criteria) {
    return array.find(item => Object.keys(criteria).every(key => item[key] === criteria[key]))
}

它 returns 输入数组中第一个匹配条件的所有已定义属性的项目(如果没有这样的项目,则 undefined ),我认为这是合同_.findWhere.

以下是如何使用它来处理您的示例:

myFindWhere($scope.template, {id: $scope.approveTemplate})

下面是我用来测试它的几个测试用例:

myFindWhere([{"a":0, "b":1}, {"a":1}, {"b":1}], {"a":0})
> Object {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})
> Object {a: 0, b: 1}
myFindWhere([{"a":0, "b":1}, {"a":1}, {"b":2}], {"b":2})
> Object {b: 2}