#javascript #ajax
#javascript #ajax
Вопрос:
есть более простой способ перехватить 4 элемента (переменная test) и выдать 4 элемента (переменная i), если я продолжу с if (), это работает так, как я хочу, но это приведет к большому количеству if ().
if(test >= 0 amp;amp; test <=3) {
if(i >= 0 amp;amp; i <=3) {
$(sample).appendTo($example);
}
}
if(test >= 4 amp;amp; test <=7) {
if(i >= 4 amp;amp; i <=7) {
$(sample).appendTo($example);
}
}
Example:
0 1 2 3 (variable i: 0 1 2 3)
4 5 6 7 (variable i: 4 5 6 7)
8 9 10 11 (variable i: 8 9 10 11)
12 13 14 15 (variable i: 12 13 14 15)
Ответ №1:
Похоже, вам нужна эта простая проверка:
if (Math.floor(test/4) === Math.floor(i/4))
Вы можете разделить оба числа на 4, чтобы увидеть, совпадают ли они quotient
. Это даст вам желаемое поведение (как предложено в OP).
Смотрите фрагмент кода ниже:
var inSameBlock = (test, i) => Math.floor(test/4) === Math.floor(i/4);
console.log(inSameBlock(1, 2));
console.log(inSameBlock(1, 5));
console.log(inSameBlock(5, 5));
console.log(inSameBlock(5, 7));
Комментарии:
1. Извините за ограниченную информацию, я пытаюсь перехватить индекс от 0 до 29 и дать первые 4 элемента (var i) для первых 4 элементов (var test) и с test index = 4 дать еще 4 элемента (var i). Что вы думаете о modulo? Я имею в виду использование%?
2. Я думаю, что частное (а не остаток) — это то, что вам нужно, согласно тому, что вы упомянули в описании. Вы можете удалить все ваши условия if и заменить их тем, что я предложил. Дайте мне знать, если это не сработает для определенного значения переменной
test
и variablei
, и как бы вы хотели, чтобы это работало для этих значений. Пожалуйста, также разверните и попробуйте встроенный фрагмент кода.
Ответ №2:
Используйте Array.prototype.every. Используя этот подход, вам просто нужно обновить vals
массив, если вы хотите, чтобы проверялось больше значений.
var vals = [test,i]
if (vals.every(v => v >= 0 amp;amp; v <= 3)) {
$(sample).appendTo($example);
}
if (vals.every(v => v >= 4 amp;amp; v <= 7)) {
$(sample).appendTo($example);
}