11.04.2014, 14:53
|
|
Аспирант
|
|
Регистрация: 11.04.2014
Сообщений: 60
|
|
Как сравнить массив с переменной в цикле?
Есть вот такой код, где нужно заменить вот это условие i==80 || i==64 || i==16
for (i = 100; i >= 1; i--) {
if (i==80 || i==64 || i==16) {
действие
} else {
другое действие
}
}
Я решил сделать массив с нужными числами, и сравнивать их с i, но не знаю как это сделать.
Подскажите пожалуйста.
Или может быть есть другой способ?
|
|
11.04.2014, 15:01
|
|
|
Регистрация: 10.07.2008
Сообщений: 3,873
|
|
var specialValues = [16, 64, 80];
for (i = 100; i >= 1; i--) {
if (specialValues.indexOf(i) != -1) {
действие
} else {
другое действие
}
}
|
|
11.04.2014, 15:02
|
Интересующийся
|
|
Регистрация: 11.02.2014
Сообщений: 27
|
|
Зачем перебирать все значения массива если вам нужно 80, 64, 16, вот их и сравнивайте, это если вам нужно именно значения массива с определенными индексами, в вашем случае я так понимаю это 80 64 16, зачем гонять весь массив.
Если у вас несколько значений а цикл в 100 итераций цикл не целесообразен!
for (i = 100; i >= 1; --i)
Так производительней.
Последний раз редактировалось barkar, 11.04.2014 в 15:19.
|
|
11.04.2014, 15:16
|
|
Аспирант
|
|
Регистрация: 11.04.2014
Сообщений: 60
|
|
Octane,
Спасибо большое!) работает.
Но теперь другой вопрос, как из json данных получить массив?
Ответ приходит в таком виде "test": "16,64,80"
Я думал, что вставлю вот так и оно сработает, но в итоге ничего не получилось:
...
success: function(demo){
var specialValues = [demo.active];
...
|
|
11.04.2014, 15:16
|
|
Аспирант
|
|
Регистрация: 11.04.2014
Сообщений: 60
|
|
barkar,
Нет, не совсем это упрощенный пример, на деле таких цифр несколько сотен, которые я получаю через Ajax
|
|
11.04.2014, 15:17
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,231
|
|
Сообщение от light
|
заменить вот это условие i==80 || i==64 || i==16
|
Как вариант...
for (i = 100; i >= 1; i--) {
switch i {
case 16: case 64: case 80:
// действия
break;
default:
// другие действия
};
};
Или так
var o = {16: true, 64: true, 80: true];
for (i = 100; i >= 1; i--) {
if (o[i]) {
//действие
} else {
//другое действие
};
};
|
|
11.04.2014, 15:27
|
Интересующийся
|
|
Регистрация: 11.02.2014
Сообщений: 27
|
|
Ответ приходит в таком виде "test": "16,64,80"
А пишите
var specialValues = [demo.active];
success: function(demo){
console.log(demo);
var specialValues = demo.test.split(',');
|
|
11.04.2014, 15:33
|
Профессор
|
|
Регистрация: 16.03.2010
Сообщений: 1,618
|
|
Лучше через объект делать - быстрее. Объект сделать можно например так:
var json = JSON.parse('{"test": "16,64,80"}');
var object = json.test.split(/\s*,\s*/).reduce(function (object, x) {
object[x] = true;
return object;
}, {});
|
|
11.04.2014, 15:39
|
|
Аспирант
|
|
Регистрация: 11.04.2014
Сообщений: 60
|
|
barkar,
Спасибо) Массив получился, только теперь код не срабатывает)
Раньше он был вида var specialValues = [16, 64, 80];
А теперь var specialValues = ["16", "64", "80"]; и соответственно ничего не выводит.
|
|
11.04.2014, 15:40
|
|
Аспирант
|
|
Регистрация: 11.04.2014
Сообщений: 60
|
|
Sweet,
Сложно как то) не знаю как к себе это пока применить, но ваш совет запомню, спасибо)
|
|
|
|