2011-06-19 2 views
0
openList = Array([1,1], [2,3], [4,5]); 
containss = function (input, arrayData, tellID) { 
    for (i = 0; i < arrayData.length; i++) { 
     if (arrayData[i] == input) { 
      if (tellID) { 
       return i; 
      } else { 
       return true; 
      } 
     } 
    } 
    return false; 
} 
trace(containss([2,3], openList, true)); 

Этот код возвращает false, когда openList содержит 2,3. Когда я добавляю трассировку (arrayData [i]), я получаю 1,1 2,3 4,5, и когда я трассирую (ввод), я получаю 2,3. Что не так? БлагодаряСоздание функции, которая проверяет, содержит ли массив что-то

ответ

0

Вы сравниваете 2 массивов с использованием соответствующего оператора:

arrayData[i]==input

Это всегда будет ложным, независимо от того, содержимое массивов. Оператор равенства в вашем случае проверяет, является ли arraydata[i] одним и тем же объектом с input, если 2 разных объекта (массивы) имеют одинаковый контент.

+0

ОК, что я должен использовать вместо этого? Я пробовал ===, но это также дает ложь. – apscience

+1

Самый простой способ сделать это, если массивы должны иметь одинаковые элементы в одном порядке - array1.toString() == array2.toString() –

+0

Если порядок не важен, а массивы должны иметь только те же элементы в любом вам может потребоваться написать пользовательскую функцию для этого –

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