Используйте 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 ответа
Вы можете использовать Лодаша find()
метод смешанный с обычным условным (if
Заявление, чтобы сделать это.
Для начала, для поиска в массиве вы можете использовать:
var result = _.find(myArray, { "urlTag": "Yahoo" });
Вы можете заменить "Yahoo"
с вашим myUrlTagToSearch
переменная здесь.
Если совпадений не найдено, он вернется undefined
в противном случае он вернет соответствие Object
, Как объекты истинные ценности и undefined
это значение Фазли, мы можем просто использовать result
как условие в пределах if
заявление:
if (result)
return "Yahoo";
else
return "";
Нам даже не нужно определять result
здесь, как мы можем просто использовать:
if ( _.find(myArray, { "urlTag": "Yahoo" }) )
return "Yahoo";
else
return "";
Или даже:
return _.find(myArray, { "urlTag": "Yahoo" }) ? "Yahoo" : "";
Вы, вероятно, можете сделать это с помощью lodash (я не знаю много о lodash), но в случае, если никто не ответит, есть простое ванильное решение JS:
function exists(site) {
return myArray.some(function (el) {
return el.urlTag === site;
}) === false ? '': site;
}
exists('Yahoo');