Javascript配列には塗りつぶし機能があります。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/fill
だからあなたはこのようなものを書くことができます
$(
new Array(copies).fill(function () {
return $(this).clone();
}.bind(el))
.map(function (el) {
return el();
})
).map(function() { return this.toArray(); }); //Turn into jQuery
また、再利用できるjQuery関数として必要な場合は、次のように記述できます。
$.fn.multiply = function(amount) {
var cloneFunction = (function() {
return $(this).clone();
}).bind(this);
return $(
new Array(amount).fill(cloneFunction).map(function(el) {
return el();
});
).map(function() { return this.toArray(); }); //Turn into jQuery
}
これにより、必要な場合にのみクローンの関数呼び出しを評価から分離する柔軟性が得られます。したがって、必要に応じて、呼び出しを分割して後で評価することができます。
これは約束であることを意味します(呼び出されたときにクローンが作成される、これにバインドされたコンテキストを持つ関数を返します)
new Array(amount).fill(cloneFunction);
これが解決策です
.map(function(el) { return el(); })
この最後のビットは、jQueryオブジェクトの配列を作成したという事実を処理しますが、実際にはjQueryコレクションが必要です
.map(function() { return this.toArray(); }); //Turn into jQuery
しかし、とにかく、このルートに行くと、最終的な解決策は次のようになります。
$(el).multiply(amount).insertAfter(anotherEl);
乾杯