これにより、番号 1、2、および 3 のアラートが表示されます。
[1,2,3].forEach(alert);
これは私にエラーを与えます:
$.extend(true, {}, [1,2,3]).forEach(alert);
エラー:
TypeError: Object #<Object> has no method 'forEach'
なぜこのようなことが起こるのでしょうか? また、複製されたオブジェクトをループするにはどうすればよいでしょうか?
これにより、番号 1、2、および 3 のアラートが表示されます。
[1,2,3].forEach(alert);
これは私にエラーを与えます:
$.extend(true, {}, [1,2,3]).forEach(alert);
エラー:
TypeError: Object #<Object> has no method 'forEach'
なぜこのようなことが起こるのでしょうか? また、複製されたオブジェクトをループするにはどうすればよいでしょうか?
呼び出し.extend()
は、配列ではなくプレーンオブジェクトを作成しています。(つまり、実際には「ディープクローン配列」を作成しているわけではありません。).forEach
プレーンオブジェクトのようなイテレータはありません。
その理由は単純で、配列[]
にはforEach
メソッドがあり、オブジェクトにはメソッド{}
がないからです。
オブジェクトの配列がある場合は、配列をforEach
介して行うことができます。
1 つのプロパティが配列であるオブジェクトがある場合、 のforEach
ように配列を使用できますobj.arr.forEach
。
それぞれがオブジェクトを持ち、プロパティとして配列を持つ配列の配列がある場合forEach
、外側の配列をforEach
介して、次に内側の配列のオブジェクトを介して、配列を保持するオブジェクトのプロパティにアクセスする関数を設定できます、そしてそれforEach
を通して。
{}.forEach
ただし、バニラ JS は使用できません。
必要なメソッドは.each()だと思います
気にしないでください、私はあなたの質問を読み間違えました...