使用lodash查找匹配值(如果存在)

时间:2015-07-13 14:58:34

标签: javascript lodash

我有以下内容:

 myArray = [{
        "urlTag": "Google",
        "urlTitle": "Users",
        "status": 6,
        "nested": {
            "id": 2,
            "title": "http:\/\/www.google.com",
        }
    },
    {
        "urlTag": "Bing",
        "tabTitle": "BingUsers"
    }]

我有myUrlTagToSearch = "Yahoo",我想循环浏览myArray,检查是否有urlTag等于"Yahoo",如果是,请返回"Yahoo",如果不:只返回一个空字符串("")。在此示例中,它应返回"",因为只有"Google""Bing"

我可以用lodash做到吗?

2 个答案:

答案 0 :(得分:5)

您可以使用lodash's find() method与常规条件(if)语句混合来执行此操作。

首先,要搜索数组,您可以使用:

var result = _.find(myArray, { "urlTag": "Yahoo" });

您可以在此处使用"Yahoo"变量替换myUrlTagToSearch

如果未找到匹配项,则会返回undefined,否则它将返回匹配的Object。由于对象是 truthy 值而undefined fasley 值,我们可以简单地使用result作为if语句中的条件:

if (result)
    return "Yahoo";
else
    return "";

我们甚至不需要在这里定义result,因为我们可以简单地使用:

if ( _.find(myArray, { "urlTag": "Yahoo" }) )
    return "Yahoo";
else
    return "";

甚至:

return _.find(myArray, { "urlTag": "Yahoo" }) ? "Yahoo" : "";

答案 1 :(得分:1)

你可能可以用lodash做这个(我对lodash不太了解),但是如果没有其他人回答,那么有一个简单的vanilla JS解决方案:

function exists(site) {
    return myArray.some(function (el) {
      return el.urlTag === site;
    }) === false ? '': site;
}

exists('Yahoo');

DEMO