У меня есть переменная, которая принимает значение из атрибута ID текущего объекта, он всегда будет выглядеть как filtercolor-красный:Присвоить значение переменной из JS массива на основе ключевых
$('.facet-options-list li input[id*=filtercolor]').each(function() {
var filterColor = $(this).attr('id');
...
});
У меня также есть массив, который содержит список возможных идентификаторов и соответствующий ему шестнадцатеричный код:
var activeFilterBg;
var filterBgColor = [];
filterBgColor = {
filtercolor-black: '#171710',
filtercolor-blue: '#4C94B6',
filtercolor-brown: '#50443D',
filtercolor-gold: '#F6D069',
filtercolor-green: '#96B14D',
filtercolor-grey: '#A8AAA5',
filtercolor-orange: '#DB5E46',
filtercolor-pink: '#E78EB1',
filtercolor-purple: '#59547E',
filtercolor-red: '#D22200',
filtercolor-silver: '#EBEBEB',
filtercolor-white: '#FFF'
};
То, что я хотел бы сделать, это взять filterColor
и назначить activeFilterBg
соответствующий код HEX из filterBgColor
. Я мог бы сделать это с switch
, но это кажется неряшливым и дает много места для ошибок в будущем.
Есть ли у меня возможность как-то найти правильный ключ, а затем назначить переменную на основе этого?
'уага color = filterBgColor [filterColor] ' – tymeJV
Как указывает Гуффа ниже, то, что вы здесь делаете, назначает пустой массив переменной (' var filterBgColor = []; '), а затем * бросает ее * и назначает объект той же переменной ('filterBgColor = {...}'). Важно знать различие между массивами и объектами в JavaScript. Вы должны использовать только массивы, если вам нужны цифровые клавиши, например. 'var a = [" A "," B "," C "]; console.log (а [0]); // => "A". В противном случае вы должны использовать Object: 'var o = {foo:" X ", bar:" Y ", ...}; console.log (o.foo); // => «X» ' –
Спасибо @ Йордан, я все еще только начинаю входить в JS, это действительно полезное различие. –