使用lodash在其他数组中的数组中查找值

Gia*_*ura 2 arrays node.js lodash

我有一个数组,如:

var db = [{
        "words": ["word1a", "word1b", "word1c"],
        "answer": "answer1"
    }, {
        "words": ["word2a", "words2b"],
        "answer": "answer2"
    }]
Run Code Online (Sandbox Code Playgroud)

我在node.js上使用lodash来检查数组中的值.我想搜索单词并返回回复.例如,如果我搜索"word1a",则响应为"answer1"

我尝试:

var e = _.find(db, function(o){
    o.words === "say"
});
console.log(e);
Run Code Online (Sandbox Code Playgroud)

但我找不到结果;

显然,我得到了未定义,因为我正在比较一个确切的值.我怎样才能获得价值?

dvl*_*lsg 6

好吧,你也得到了,undefined因为你也没有返回o.words === "say"比较.

但你是对的,这种比较在这种情况下不起作用.你应该_.some_.find回调中使用类似的东西:

var e = _.find(db, function(o) {
    return _.some(o.words, function(word) {
        return word === 'say';
    });
});
Run Code Online (Sandbox Code Playgroud)

这应该给你回来的对象(如果没有找到,则为undefined).如果你answer特别想要,你仍然需要将它从对象中拉出来.

这是一个工作小提琴.请注意,您还应该对undefined对象/属性进行一些额外的保护.不过,我会把它留给你.