下划线findWhere函数可以找到元素匹配条件a或b

ana*_*han 3 javascript underscore.js

我有一个对象数组

var arr = [{a:1},{a:5}, {a:6},{a:11}];
Run Code Online (Sandbox Code Playgroud)

我想使用下划线查找where函数来检索满足条件的对象a = 1a =11

喜欢:

_findWhere(arr, {a:1} || {a:11})
Run Code Online (Sandbox Code Playgroud)

这样的事情有可能吗?

Gru*_*nny 7

find的行为类似于findWhere,它返回传递搜索条件的第一个项目.使用find,您可以使用谓词指定搜索条件.

var result = _.find(arr, function(item) {
    return item.a == 1 || item.a == 11;
});
Run Code Online (Sandbox Code Playgroud)


Nin*_*olz 1

你可以用纯 Javascript 编写它Array#some

var arr = [{ a: 1 }, { a: 5 }, { a: 6 }, { a: 11 }, { a: 11 }],
    found = function (array) {
        var index;
        return arr.some(function (a, i) {
            if (a.a === 1 || a.a === 11) {
                index = i;
                return true;
            }
        }) && array[index] || undefined;
    }(arr);

document.write('<pre>' + JSON.stringify(found, 0, 4) + '</pre>');
Run Code Online (Sandbox Code Playgroud)