2017-05-25 66 views
-2

當我運行這個功能我得到一個語法錯誤,意想不到的數量寫了一個檢查元素是否在數組

var numberList = [1, 5, 2, 20, 7, 90, 3]; 
    function inArray(numberList, 90) { 
     for (var i = 0; i < numberList.length; i++) { 
      if(numberlist[i] === 90){ 
       return true; 
      } else { 
       return false; 
     } 
     } 
    } 
    inArray(); 
+3

'numberList.includes(90)'似乎更容易:) –

+0

'var 90 = 80'給我同樣的錯誤:( - (你需要聲明參數並將它們傳遞給函數BTW) –

+0

對不起w到javascript,你可以更具體的如何看起來和工作在代碼塊? –

回答

0

你得到的方法聲明和方法調用之間的混淆。 當你定義一個函數時,你聲明瞭函數期望的參數,並且你可以在那裏使用任何你想要的名字,因爲這個名字只是函數體內的一個引用,當你調用該函數時,它將傳遞給你的參數。

所以你的情況:

var numberList = [1, 5, 2, 20, 7, 90, 3]; 
    // function declaration 
    function inArray(myList, numberToFind) { 
     for (var i = 0; i < myList.length; i++) { 
      if(myList[i] === numberToFind){ 
       return true; 
      } else { 
       return false; 
     } 
     } 
    } 
    // function invocation 
    inArray(numberList, 90); 

然後,當你正在執行檢查,可以直接返回,而不是使用,如果和返回true假支票。

而且,你的腳本只檢查的第一個數字,然後立即返回true或false。

所以你的函數應該是這樣的:

function inArray(myList, numberToFind) { 
 
    for (var i = 0; i < myList.length; i++) { 
 
     if(myList[i] === numberToFind){ 
 
      return true; 
 
     } 
 
    } 
 
    return false; 
 
} 
 
var array = [1, 3, 5, 6]; 
 
console.log(inArray(array, 5));

我想這只是一個實驗,因爲一個陣列內找到一個元素的JavaScript已經提供了幾個方法:)

+0

完美的解釋!謝謝! –

1

我假設你正在實現這個瞭解JavaScript中的JavaScript函數。否則,你只需要使用像numberList.includes(90)這樣的東西並完成。

當你定義一個函數,你發送給函數的參數不是文字值(如90)。相反,他們是變量,在函數的範圍是活動:

function inArray(arr, number) { 
    for (var i = 0; i < arr.length; i++) { 
     if(arr[i] === number){ 
      return true; 
     } 
    } 
    return false; 
} 

然後,當你調用一個函數,你傳遞實際值:

inArray(numberList, 90); 
+0

感謝真的幫助我瞭解這個函數是如何工作的!我現在唯一的問題是它沒有返回任何東西回到屏幕上。 –

0

你可以使用array.indexOf (元素)來檢查數組中是否包含一個元素。

它返回-1,如果元素不是陣列或陣列的元素是位。

所以basicly如果它返回> = 0,則該數組包含的元素。

===額外====

除了達文特賴恩答案,如果您有困難,理解函數的參數,我建議你搜索argumens和參數之間的差異。

+0

是的,他們可以,但你沒有在他們的代碼中解決問題 –

2

你只需要在循環返回true,如果找到了,因爲你需要訪問的所有項目,如果沒有找到。

然後我建議使用數字參數來搜索。

function inArray(array, value) { 
 
    for (var i = 0; i < array.length; i++) { 
 
     if (array[i] === value) { 
 
      return true; 
 
     } 
 
    } 
 
    return false; 
 
} 
 

 
var numberList = [1, 5, 2, 20, 7, 90, 3]; 
 

 
console.log(inArray(numberList, 90));

相關問題