Javascript Mảng có chức năng điền:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/fill
Vì vậy, bạn có thể viết một cái gì đó như này
$(
new Array(copies).fill(function() {
return $(this).clone();
}.bind(el))
.map(function (el) {
return el();
})
).map(function() { return this.toArray(); }); //Turn into jQuery
và nếu bạn muốn nó như là một hàm jQuery mà bạn có thể tái sử dụng bạn có thể viết một cái gì đó như thế này
$.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
}
này mang lại cho bạn sự linh hoạt để tách các cuộc gọi chức năng clone từ là chỉ được đánh giá khi bạn cần. Vì vậy, nếu bạn muốn bạn có thể chia nhỏ cuộc gọi và đánh giá sau.
nghĩa đây là lời hứa (nó sẽ trả về chức năng với bối cảnh ràng buộc này mà khi gọi sẽ sao chép)
new Array(amount).fill(cloneFunction);
và đây là độ phân giải
.map(function(el) { return el(); })
và chút cuối cùng này xử lý các thực tế là tôi đã tạo một mảng các đối tượng jQuery nhưng thực sự tôi muốn có một bộ sưu tập jQuery
.map(function() { return this.toArray(); }); //Turn into jQuery
nhưng ở bất kỳ tỷ lệ nào, giải pháp cuối cùng của bạn sẽ trông giống như thế này, nếu bạn đi tuyến đường này.
$(el).multiply(amount).insertAfter(anotherEl);
cổ vũ
Cảm ơn Guffa này là hoàn hảo! – uriah