@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 ('такой комбинации нет')
						}
					}		
				}

			});
		});
  • Вопрос задан
  • 1447 просмотров
Решения вопроса 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, тут ступор
У меня тоже ступор, не могли бы вы подробнее расписать что именно нужно проверить
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы