JS / JQuery Найти индекс массива в объекте

182
24 декабря 2019, 12:40

Есть следующий объект: subcats = {20: [49, 50, 51], 16: [54, 55]};

Как можно найти ключ объекта к которому приходится число найденное в его массиве?

Допустим я получил число 50, значит в subcats это значение является дочерним 20. Тоже самое с 55 или 54 - должны получить 16.

Пытался методами find и findIndex но там только простые массивы.

Answer 1

Можно получить список ключей с помощью Object.keys() и применить find или findIndex уже к нему:

var subcats = {20: [49, 50, 51], 16: [54, 55]}; 
 
console.log(Object.keys(subcats).find(function(key){ return this[key].includes(50);}, subcats)); 
 
console.log(Object.keys(subcats).find(function(key){ return this[key].includes(55);}, subcats));

Либо пройтись по ключам с помощью for..in

var subcats = { 
  20: [49, 50, 51], 
  16: [54, 55] 
}; 
 
function findKey(obj, key) { 
  for (var i in obj) { 
    if (obj[i].includes(key)) return i; 
  } 
} 
 
console.log(findKey(subcats, 50)); 
console.log(findKey(subcats, 54));

READ ALSO
Как сделать плавное выпадающее меню?

Как сделать плавное выпадающее меню?

Помогите, пожалуйста, сделать плавное выпадающее менюКод ниже работает, но дропдаун не анимированный

166
Считать несколько строк с клавиатуры в переменную

Считать несколько строк с клавиатуры в переменную

У меня есть прибор, который работает в режиме клавиатурыОн делает какие-то измерения и передает их по bluetooth на ПК

209
Unity DotNetZip Unzip (Распаковка в оперативную память png)

Unity DotNetZip Unzip (Распаковка в оперативную память png)

Как сделать так, что бы после распаковки в MemoryStream(Если я правильно понял, то он его извлекает в оперативную память), я мог получить Image (пытался...

224
Как отловить все клавиши через низкоуровневый хук?

Как отловить все клавиши через низкоуровневый хук?

Как отловить в HookCallback все клавиши с проверкой по шифтам ит

209