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

Use lodash to find a matching value if it exists

我有以下内容:

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

我有myUrlTagToSearch = "Yahoo",我想遍历myArray,检查是否有urlTag等于"Yahoo",如果是:return"Yahoo",如果不是:只是 return 一个空字符串 ("")。在这个例子中,它应该 return "" 因为只有 "Google""Bing".

我可以用 lodash 做这个吗?

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

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

exists('Yahoo');

DEMO

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

对于初学者来说,要搜索数组,您可以使用:

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

您可以在此处将 "Yahoo" 替换为您的 myUrlTagToSearch 变量。

如果找不到匹配项,它将 return undefined,否则它将 return 匹配项 Object。由于对象是 truthy 值而 undefinedfasley 值,我们可以简单地使用 result 作为条件if 声明:

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

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

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

甚至:

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