Используйте 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');

DEMO

Другие вопросы по тегам