Добро дамам и господам, 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 изменение картинки подсчитывается только при второй итерации
Можно создать булевый массив, ключи которого — числа от 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>
Сборка персонального компьютера от Artline: умный выбор для современных пользователей