Найти значение в object

198
09 июня 2018, 20:10

Задача такая: нужно "вернуть родословную" в 2 объектах т.е
есть 2 объекта obj1 и obj2 и их свойства:

obj1["Женщинам"] = 'кросовки,топы';  
obj1["Мужчинам"] = 'шорты,майки';
obj2["кросовки"] = 'adidas,puma';
obj2["топы"] = '...';
...

теперь допустим нужно найти puma и функция должна вернуть кросовки -> Женщинам

Answer 1

В функцию search передаете в масиве сколько угодно обьектов по которым будет осуществлятся поиск и значение от которогу нужно построить цепочку. Обьекты нужно передавать в порядке в которм должен осужествляться поиск. На выходе получите масив с ключами где были найдены вхождения.

const obj1 = {}; 
const obj2 = {}; 
 
obj1["Женщинам"] = 'кросовки,топы';   
obj1["Мужчинам"] = 'шорты,майки'; 
obj2["кросовки"] = 'adidas,puma'; 
 
const search = (arrObj, target) => arrObj.reduce( 
    (prev, curr, index) => [ 
        ...prev, 
        Object 
          .keys(curr) 
          .find(key => curr[key].includes(prev[index])) 
    ], 
    [target] 
) 
 
window.document.getElementById('result').innerHTML = search([obj2, obj1], "puma").join('->')
<div id="result"></div>

пс: перед тем как использовать в продакшене нужно допилить обработку исключительных ситуаций ;)

Answer 2

Попробуйте так))

let obj1 = { 
  "Женщинам": 'кросовки,топы', 
  "Мужчинам": 'шорты,майки' 
}; 
 
let obj2 = { 
  "кросовки": 'adidas,puma', 
  "топы": 'nike,guchi', 
  "шорты": 'nike' 
}; 
 
$('#click_me').click(function() { 
  let name = $('#company').val(); 
  let keys2 = []; 
  $.each(obj2, function( key, value ) { 
    if (value.indexOf(name) !== -1) { 
      keys2.push(key); 
    } 
  }); 
   
  $.each(keys2, function( key2, value2 ) { 
    $.each(obj1, function( key1, value1 ) { 
      if (value1.indexOf(value2) !== -1) { 
        console.log(value2 + ' -> ' + key1); 
      } 
    }); 
  }); 
   
   
   
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<input placeholder="Введите фирму" type="text" id="company"></input> 
<button id="click_me">Click ME</button>

READ ALSO
JQuery не работает событие клик по SVG

JQuery не работает событие клик по SVG

помогите решить проблему , пытаюсь повесить событие клик на селектор SVG но событие не срабатывает , не могу понять почему

178
Как получить значение поля формы? javascript

Как получить значение поля формы? javascript

В выпадающем списке выбираю дату:

214
Как получить height содержимого в iframe?

Как получить height содержимого в iframe?

У меня есть jsf, который динамически вставляю в IframeТребуется, чтобы iframe подстроился под высоту содержимого(сейчас это вертикальный скролл)

192
AngularJS достать из JSON значение

AngularJS достать из JSON значение

Всем привет, я только начал учить AngularJS, поэтому не судите строгоУ меня возник такой вопрос: Мне с API приходит такой JSON:

189