Здравствуйте! Помогите, пожалуйста, разобраться с индексацией массива arr в следующем примере (учебное упражнение, реализующее рулетку):
<meta charset="utf-8">
<script>
var arr = [];
var rounds = 100;
var zero = 0;
var i = 0;
for(i=0; i<=rounds; i++) {
arr.push(Math.round(Math.random()*36));
}
alert(arr);
for (i=0; i<arr.length; i++) {
if(arr[i]==0) {
zero++;
}
}
alert("Вероятность выпадания зеро: "+zero/arr.length*100+"%");
</script>
Все в принципе понятно, за исключением единственного момента: условие в теле второго цикла, которое проверяет наличие zero if(arr[i]==0)
. Почему i, которая ранее в коде была обьявлена как обычная переменная, использовалась в качестве счетчика и никоим образом не была связана с массивом arr, внезапно стала его индексом по которому проверяется наличие нуля. Спасибо!
Для доступа к элементам массива используется Bracket notation
В квадратных скобках может быть абсолютно любая строка, неважно откуда взявшаяся: прописанная напрямую или из какой-либо переменной.
В данном случае используют переменную i
, так как из-за условий цикла она будет меняться от минимального индекса массива, до максимального, что позволит проверить все элементы.
Если я правильно поняла вопрос, то нужно понять как работает данный цикл.
for (i=0; i<arr.length; i++) {
if(arr[i]==0) {
zero++;
} }
В этом цикле вы смотрите наличие 0
в массиве arr
Для этого естественно нужно пройтись по массиву, т.е. перебрать все элементы и сравнить элемент с 0
, и далее по коду.
Короче говоря, вы входите в цикл, присваиваете i = 0
, смотрите на arr[0]
, если он равен нулю, считаете, если нет, инкрементируете i
и повторяете итерацию снова.
Если нет, то думаю стоит уточнить, что именно непонятно и тогда будет проще понять, как с этим бороться)
В данном случае это оптимизация производительности (в данном случае на мой взгляд абсолютно бесполезная, хоть и имеет место быть). i
объявляется один раз а не 2:
var arr = [];
var rounds = 100;
var zero = 0;
for (var i = 0; i <= rounds; i++) {
arr.push(Math.round(Math.random() * 36));
}
alert(arr);
for (var i = 0; i < arr.length; i++) {
if (arr[i] == 0) {
zero++;
}
}
alert("Вероятность выпадания зеро: " + zero / arr.length * 100 + "%");
<meta charset="utf-8">
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
кто может подсказать? Есть два скрипта в одно из них touch swipe не работает но работает управление по Click, когда пытаюсь подключить сторонний скрипт...
Использую Хром на ХР 49 версии и при загрузке страницы выпадает alert(Unexpected token ) )На версии 72 все отлично работает