これにより、番号 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()だと思います
気にしないでください、私はあなたの質問を読み間違えました...