Алгоритм вычитание “хоть одно”

234
03 июля 2017, 18:22

Добро дамам и господам, i have массив

var results = {
'a': '1',
'b': '2'};

и мне нужно пробежаться по массиву так чтобы если у хоть одного ключа значение == 1 то кое-что сделать в jquery, также если хоть у одного ключа значение == 2 сделать кое-что в jquery = так на все цифирки от 1 до 5

То что у меня получилось:

for (var key in results) {
    if (results[key] == '1') {
        $('.avatar > img').attr('src', '/images/avatars/chief_1.svg') 
        break
    }
    if (results[key] == '2') {
        $('.avatar > img').attr('src', '/images/avatars/chief_2.svg') 
        break
    }
    if (results[key] == '3') {
        $('.avatar > img').attr('src', '/images/avatars/chief_3.svg') 
        break
    }
    if (results[key] == '4') {
        $('.avatar > img').attr('src', '/images/avatars/chief_4.svg') 
        break
    }
    if (results[key] == '5') {
        $('.avatar > img').attr('src', '/images/avatars/chief_5.svg') 
        break
    }
}

При break цикл заканчивает при первом же итерации, а

при continue изменение картинки подсчитывается только при второй итерации

Answer 1

Можно создать булевый массив, ключи которого — числа от 1 до 5, а значения — true или false, в зависимости от того, встречался ли уже такой ключ.

let results = { 
  'a': '1', 
  'b': '2' 
}; 
 
let isActionPerfomed = []; 
for (let i = 1; i <= 5; ++i) { 
  isActionPerfomed[i] = false; 
} 
 
for (let key in results) { 
  let value = results[key]; 
  for (let i = 1; i <= 5; ++i) { 
    if (value == i && !isActionPerfomed[i]) { 
      console.log(`выполняем действие ${i}`); 
      $('.avatar > img').attr('src', `/images/avatars/chief_${i}.svg`); 
      isActionPerfomed[i] = true; 
    } 
  } 
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>

READ ALSO
Список справа от заголовка CSS

Список справа от заголовка CSS

Как сделать чтобы список был сразу справа от заголовка , а не под ним ?

248
Рамка в стиле CATerpillar

Рамка в стиле CATerpillar

Какими средствами лучше всего сделать рамку, скажем к форме комментариев, как на присутствующем здесь изображении? Я понимаю что ее можно...

255
Как сохранить изменения в css файле Yii2

Как сохранить изменения в css файле Yii2

Вношу изменения в css-файле, который подключен и благополучно работал, но почему-то сейчас изменения в нем не сохраняются, php-storm все сохранил,...

301