Всем привет. Есть объект с категориями и функция выбора конкретной категории. Перебрал объект, вывел все категории, жмякнул по кнопке и записал в глобальную переменную выбранную категорию. Далее нужно вытащить из объекта всё, что соответствует выбранной категории : ключи и значения. Но не получается. Вот объект :
var categories = {
'Animals' : [
{ Camel: 'http://pngimg.com/uploads/camel/camel_PNG2920.png' },
{ Elephant: 'https://orig00.deviantart.net/fbb1/f/2014/179/d/6/elephant_png_by_wdwparksgal_stock-d7oegd8.png' }
],
'Fruits' : [
{ Apple: 'http://markbeechmarketing.com/wp-content/uploads/2013/03/GreenApple.png' },
{ Aprikose: 'http://www.boeschbodenspies.com/wp-content/uploads/2017/08/apricot.png' }
]
};
В функции я получаю кол-во категорий, перебираю объект и вывожу все категории на экран в виде кнопок. В качестве текста этой кнопки, используется ключ объекта. Если я не очень понятно выразился, то у меня кол-во кнопок, соответствующее числу категория объекта, в данном случае : Fruits и Animals.
function shooseCategory() {
var allCategories = Object.keys(categories);
// Создать кнопки с категориями
var categoriesArray = [];
for (var i = 0; i < allCategories.length; i++) {
categoriesArray.push('<div class="category-btn">'+ allCategories[i] +'</div>');
}
};
Далее при клике на какую-то категорию, я получаю текущую выбранную категорию, точнее текст кнопки (соответствующий ключу объекта)
// Помещаю это в глобальную переменную
(клик) {
checkedCategory = $(this).text();
}
Ок, категория выбрана. У нас есть слово, например, Fruits. Теперь нужно достать из объекта соответствующие ключи и свойства. И вот тут тупняк..
У нас есть
var allCategories = Object.keys(categories);
var checkedCategory = 'Fruits';
var category = Object.keys(categories[checkedCategory]); // Возвращает числовые индексы
var categoryLength = allCategories.length; // Возвращает длину
var category = allCategories.checkedCategory; // Возвращает undefined
var category = allCategories[checkedCategory]; // Возвращает undefined
var category = allCategories[Fruits]; // Возвращает Fruits not defined
var category = allCategories.Fruits; // Возвращает Fruits not defined
var category = Object.keys(categories.checkedCategory); // can't convert undefined to object
var category = Object.keys(categories[checkedCategory]); // can't convert undefined to object
Я уже не могу вытаскивать из объекта нужные мне свойства по ключам, как здесь :
var arr = {
width: 300
};
var w = 'width';
var res = arr[w];
console.log(res);
Это потому что я работаю с jSON объектом с вложенными объектами и массивами (проще прощения, если напутал с терминологией) ? Мне теперь, получается, надо заново перебирать весь объект с помощью $.each и сравнивать его с выбранной категорией ? Или что, где, как ?..
Спасибо, что дочитали до конца
На всякий случай, задача в том, чтобы вытащить из объекта ключи и значения по имени вложенного объекта.