2015-05-29 2 views
0

Я пытаюсь создать функцию, которая будет непрерывно проходить через массив и проверять, есть ли еще элементы с определенным значением. Если этих элементов больше нет, то я хотел бы, чтобы функция выполняла определенное действие.Пройти через массив и проверить определенные значения?

Я проверяю 0. Если ничего нет = 0, то я хочу отобразить изображение. Вот что я имею, любые предложения?

function partiewin() { 
    // On verifie si il y a encore des cases avec pour valeur '0' et si non, on  fini la partie 

    var found = false; 
    for (i = 1; i <= hauteur; i++) { 
     for (j = 1; j <= largeur; j++) { 
      if (decor[i][j] != 0) { 
       window.alert("You win"); 
       found = 1; 
      } 
     } 
    } 
    if (!found) { 
    } 
} 

Это массив

var decor = new Array(hauteur); 
for (i = 0; i <= hauteur; i = i + 1) { 
    decor[i] = new Array(largeur); 
} 

Массив длинный список этой формы:

decor[1][1] = '24'; decor[1][2] = '21'; decor[4][8]='0' ; etc 

В случае, если это не работает? Я не получаю никаких предупреждений или никакого ответа вообще когда-то все «0» технически ушел из карты ..

+2

В чем проблема? Вы получаете сообщение об ошибке? – Dzyann

+1

Работает ли он? Если нет, то каким образом он не работает? – leekaiinthesky

+0

Ну, когда в игре PACMAN и все пространства с пищей пропадают (n пустое место - 2, а продовольственное пространство - 0), я не получаю предупреждение в окне. – JuCho

ответ

0

С вашей помощью массива, попробуйте метод Foreach массивов: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach

В end Я предполагаю, что вам нужно пройти через вложенный массив массивов.

http://jsfiddle.net/TylersDesk/yg8ag0vq/

var arrayOfArrays = [ 
[2,1,2,3,4,5], 
[2,1,2,1,4,5], 
[8,1,2,3,4,5], 
[4,1,2,3,4,5], 
[2,1,2,3,4,5], 
[2,1,2,3,0,5],  
]; 

var flag = false; 


for (i=0; i<arrayOfArrays.length; i++) { 

    arrayOfArrays[i].forEach(function(value, index, array){ 
     console.log(value); 
     if (value === 0) { 
       console.log('Found a value'); 
       flag = true; 
     } 
    }); 
} 

if (flag) { 
//do work 
} 

Там может быть проблема с тем, как ваш объявляя эти массивы. Например, когда вы используете новый массив (numberOfIndexes), вы задаете, сколько индексов для массива, но ваш орех точно устанавливает любые значения.

Так увидеть это:

var hauteur = 40; 
var largeur = 20; 

var decor = new Array(hauteur); 
for (i=0; i <= hauteur; i=i+1) 
{ 
    decor[i] = new Array(largeur); 
} 

console.log(decor); 
console.log(decor[0][1]); 

Если высокомерие и larguer целые числа, они просто создают массив массивов без значений.

Помните, что если ваше пропускание единичного значения для new Array(), сво длиной массива, а не значения. Чтобы установить значение, которое вы должны были бы сделать что-то вроде new Array(value1, value2, value3,)

Прочитайте это: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array

я предлагаю бросать в некоторых заявлениях войти в свой код, чтобы убедиться, что ваши работы с массивами и более конкретно массивы, которые имеют значение ,

+0

Значит, это пройдет через мой массив и проверьте «0»? – JuCho

+0

@JuCho Ваш цикл через многоядерный массив в конце. Я обновил ответ вместе с js скрипкой. – TyMayn

+0

Не работает, я отредактировал свое оригинальное сообщение, чтобы быть более ясным – JuCho

Смежные вопросы