-1

私はjavascriptの新人です。配列メソッドをいくつか試したばかりで、それを試してみたいと思っていました。私が書いたこのコードで立ち往生しています。

function customFindProperty(arrayToFind,requiredItem){

  var elementIndex = 0;

  function isRequiredItem(item){
    elementIndex++;
    return item==requiredItem;
  }

  elementFound = arrayToFind.some(isRequiredItem);

  if(elementFound){
    return arrayToFind(elementIndex);
  } else{
    alert("Element Not Found");
    return undefined;
  }
}
var myElement = customFindProperty([1,2,3,4,5],3);

これにより、エラー TypeErrorが発生します。オブジェクトは関数ではありません。セミコロンもありません。

追加情報: typeof customFindProperty「関数」を返します

この質問を閉じる方法がわからない答えを見つけたのは、arrayToFind [elementIndex]ではなくarrayToFind(elementIndex)を返そうとした単純な入力ミスです。

4

5 に答える 5

0

arrayToFind[elementIndex]を返します

関数を呼び出すように、使用する親。正方形のブレスレットは、アレイへのアクセスに使用されます。

于 2012-09-13T11:59:38.320 に答える
0

arrayToFind-これは関数ですか?そうではなく、あなたはそれを呼び出そうとして失敗しています。

ちなみに、ここではこれを使用しています- 、これは配列であると想定できます。値を返すには、次のように角かっこarrayToFind.someでインデックスを付ける必要があります。

arrayToFind[elementIndex];
于 2012-09-13T11:59:47.450 に答える
0

参考までに、これはもっと簡単にできます。

var arr = [1,2,3,4,5];

var itemToFind = 3;

var indexOfMyItem = arr.indexOf(itemToFind); // -1 would mean not found

だからそれは-に帰着します

 return indexOfMyItem > -1 ? arr[itemToFind] : undefined;
于 2012-09-13T11:59:54.357 に答える
0

配列へのアクセスには、角括弧の代わりに括弧を使用しています。arrayToFind(elementIndex);である必要がありますarrayToFind[elementIndex];

于 2012-09-13T12:06:32.193 に答える
0

私はマットに同意します。問題は関数の名前だと思います

関数の名前はcustomFindPropertyであり、呼び出していますcustomFindPropety(プロパティのrに注意してください)。

これを変更すると、arrayToFindは関数ではないため、次の問題は「some」にあります。

于 2012-09-13T12:06:46.077 に答える