JSは配列アイテムの関数を呼び出すことができません

ルーベン

配列の要素が次の項目で割り切れるかどうかを配列をチェックする関数を作成しました。そうでない場合は、配列から次の項目を削除します。

2つの配列で構成されるテスト配列を作成しました。それらをループしてconsole.logを実行すると、期待どおりに返されます。

console.logではなくforループで関数(deleteItem)を呼び出すと、2番目ではなく最初の配列要素の結果が返されます。私は本当に混乱していて、これを理解していません。誰かが私が間違っていることのヒントを教えてもらえますか?

前もって感謝します!

let testArray = [[240,12, 10, 8,23],[240,12, 10, 8,24]];

function deleteItem(array) {
      if(array.length<=1){
            return array;
      }
      else{
            for(i=0; i<array.length-1;i++) {
                  let changed = true;
                  while(changed){
                        if(array[i]%array[i+1]!=0) {
                              array.splice(i+1,1);
                              i=0;
                              break;
                        }
                        else {changed=false};
                  }
            }
      }
      return array;
}

コンソールログのみの場合、期待どおりに両方の要素が返されます。

for(i=0;i<testArray.length;i++){
      console.log(  testArray[i]);
      //console.log(deleteItem(  testArray[i]));
}

returns:
[240, 12, 10, 8, 23]
[240, 12, 10, 8, 24]

関数を使用すると、最初の配列要素のみが呼び出されます

for(i=0;i<testArray.length;i++){
      console.log(  testArray[i]);
      console.log(deleteItem(  testArray[i]));
}
returns:
[240, 12, 10, 8, 23]
[240, 12]

I expect:
[240, 12, 10, 8, 23]
[240, 12]
[240, 12, 10, 8, 24]
[240, 12]
O.ベンツ

forループ変数を「let」で宣言することを忘れないでください。レットを追加するとすぐに正常に動作します。(deleteItem関数内でも同じ)

for(let i = 0; i < testArray.length; i++){
      console.log(testArray[i]);
      console.log(deleteItem(testArray[i]));
}

testArrayをループしてすべての要素を出力するだけで問題はありませんが、deleteItem()関数内に、ローカルで宣言されていない「i」という名前の変数を持つ別のforループがあります。

つまり、グローバルi = 0でtestArrayループを開始します。次に、同じグローバルiをforループに使用するdeleteItem関数を呼び出します。したがって、deleteItem関数が実行された後、グローバルiは4に設定され、元のforループ条件は保持されなくなります。これが、2番目のtestArray要素に対してdeleteItem関数が呼び出されない理由です。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

配列内の関数を呼び出すことができません

分類Dev

Javascriptは別の関数内の配列のプッシュを呼び出すことができません

分類Dev

react-native-videoアイテムで関数を呼び出すことができません

分類Dev

配列プログラムでbool関数を呼び出すことはできません

分類Dev

配列プログラムでbool関数を呼び出すことはできません

分類Dev

文字列キーでVBA辞書アイテムを呼び出すことができません

分類Dev

WordPressのテーマでプラグインの関数を呼び出すことができません

分類Dev

onChange関数はすべてのアイテムをフィルタリングしますが、すべてのアイテムを再度呼び出すことはできませんか?

分類Dev

別のJSファイルから関数を呼び出すことができません

分類Dev

Int配列は呼び出すことができません

分類Dev

REST関数を呼び出すことはできません

分類Dev

PHP関数を呼び出すことはできません

分類Dev

引数のないタイプ アイテムのインティライザーを呼び出すことはできません

分類Dev

関数型js-独自の関数を再帰的に呼び出すことはできません

分類Dev

AmazonConnectのContactFlowでAWSLambda関数を呼び出すことができません

分類Dev

js関数によって呼び出されるgo関数で配列を返すことはできません。パニック:ValueOf:無効な値

分類Dev

ApiGatewayはLambda関数を呼び出すことができません

分類Dev

codeigniterは関数$ configを呼び出すことができません

分類Dev

Pythonは関数を呼び出すことができません

分類Dev

ODEINTは関数を呼び出すことができません

分類Dev

gdbは関数を呼び出すことができません

分類Dev

if()内で別の関数を呼び出すことはできません

分類Dev

typeaheadを別の関数内で呼び出すことはできません

分類Dev

Ajax.BeginFormのOnFailure関数を呼び出すことができません

分類Dev

関数を作成することはできますが、呼び出すことができません

分類Dev

手動で呼び出さないと、関数の1つを呼び出すことができません

分類Dev

ランダム関数Javascriptを呼び出しますが、同じ関数を2回呼び出すことはできません

分類Dev

非関数型 'String'の値を呼び出すことはできません

分類Dev

非関数型 'String'の値を呼び出すことはできません

Related 関連記事

  1. 1

    配列内の関数を呼び出すことができません

  2. 2

    Javascriptは別の関数内の配列のプッシュを呼び出すことができません

  3. 3

    react-native-videoアイテムで関数を呼び出すことができません

  4. 4

    配列プログラムでbool関数を呼び出すことはできません

  5. 5

    配列プログラムでbool関数を呼び出すことはできません

  6. 6

    文字列キーでVBA辞書アイテムを呼び出すことができません

  7. 7

    WordPressのテーマでプラグインの関数を呼び出すことができません

  8. 8

    onChange関数はすべてのアイテムをフィルタリングしますが、すべてのアイテムを再度呼び出すことはできませんか?

  9. 9

    別のJSファイルから関数を呼び出すことができません

  10. 10

    Int配列は呼び出すことができません

  11. 11

    REST関数を呼び出すことはできません

  12. 12

    PHP関数を呼び出すことはできません

  13. 13

    引数のないタイプ アイテムのインティライザーを呼び出すことはできません

  14. 14

    関数型js-独自の関数を再帰的に呼び出すことはできません

  15. 15

    AmazonConnectのContactFlowでAWSLambda関数を呼び出すことができません

  16. 16

    js関数によって呼び出されるgo関数で配列を返すことはできません。パニック:ValueOf:無効な値

  17. 17

    ApiGatewayはLambda関数を呼び出すことができません

  18. 18

    codeigniterは関数$ configを呼び出すことができません

  19. 19

    Pythonは関数を呼び出すことができません

  20. 20

    ODEINTは関数を呼び出すことができません

  21. 21

    gdbは関数を呼び出すことができません

  22. 22

    if()内で別の関数を呼び出すことはできません

  23. 23

    typeaheadを別の関数内で呼び出すことはできません

  24. 24

    Ajax.BeginFormのOnFailure関数を呼び出すことができません

  25. 25

    関数を作成することはできますが、呼び出すことができません

  26. 26

    手動で呼び出さないと、関数の1つを呼び出すことができません

  27. 27

    ランダム関数Javascriptを呼び出しますが、同じ関数を2回呼び出すことはできません

  28. 28

    非関数型 'String'の値を呼び出すことはできません

  29. 29

    非関数型 'String'の値を呼び出すことはできません

ホットタグ

アーカイブ