我有以下内容:
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做到吗?
答案 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');