@Nik1712

Как выбрать из массива js нужные ключи?

есть несколько групп элементов с атрибутами. всегда один элемент в группе выбран (класс selected). по клику выбор может меняться.

<div>
  <a data-attribute-name="type"
     data-attribute-value="34"></a>
<a data-attribute-name="type"
     data-attribute-value="35" class="selected"></a>
</div>

<div>
  <a data-attribute-name="color"
       data-attribute-value="white"></a>
  <a data-attribute-name="color"
       data-attribute-value="black" class="selected"></a>
  <a data-attribute-name="color"
       data-attribute-value="red"></a>
</div>
 
<div> 
  <a data-attribute-name="size"
       data-attribute-value="big"></a>
  <a data-attribute-name="size"
       data-attribute-value="small" class="selected"></a>
  <a data-attribute-name="size"
       data-attribute-value="middle"></a>
</div>


есть некоторый массив (в нем для каждого ключа могут быть как все, так и не все атрибуты)
var arr = {"10002":{"color":"black", "type":"34", "size":"small"},"10003":{"color":"white", "type":"34", "size":"big"}}

как перебрать массив, чтоб при всех выбранных элементах с дата-атрибутами name и value, соответствующим ключу-значению id, например 10002, выводилось true?

$(function() {
			$('a').on('click' , function() {  

				var attributeName = $(this).attr('data-attribute-name');

				var attributeValue = $(this).attr('data-attribute-value');

				$(this).siblings('.attributename').removeClass('selected');

				$(this).addClass('selected');

				for(var i in arr) {
					var offerVariant = (arr[i][attributeName]);					
					if (offerVariant == attributeValue) {
						attributeName = i;
						if ( ) { // если все ключи-значения в элементах .selected содержатся в attributeName, тут ступор
							$.getJSON(url + attributeName, function (data) {
								alert(data.productName);
							});
						}
						else {
							alert ('такой комбинации нет')
						}
					}		
				}

			});
		});
  • Вопрос задан
  • 1457 просмотров
Решения вопроса 1
Stalker_RED
@Stalker_RED
Первые три строчки можно переписать так:
var attributeName = $(this).data('attribute-name');
var attributeValue = $(this).data('attribute-value');
$(this).addClass('selected').siblings().removeClass('selected');

// если все ключи-значения в элементах .selected содержатся в attributeName, тут ступор
У меня тоже ступор, не могли бы вы подробнее расписать что именно нужно проверить
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы