Tôi có var ar = [1, 2, 3, 4, 5]
và muốn có một số chức năng getSubarray(array, fromIndex, toIndex)
, kết quả của cuộc gọi getSubarray(ar, 1, 3)
là mảng mới [2, 3, 4]
.Làm thế nào để có được subarray từ mảng?
Trả lời
Hãy xem Array.slice()
var ar = [1, 2, 3, 4, 5];
var ar2 = ar.slice(1, 1 + 3);
print(ar2)
>>2,3,4
hồi vì mục đích đơn giản của lát, sử dụng phần mở rộng của tôi để Mảng Class:
Array.prototype.subarray=function(start,end){
if(!end){ end=-1;}
return this.slice(start, this.length+1-(end*-1));
}
Sau đó:
var bigArr=["a", "b", "c", "fd", "ze"]
Test1:
bigArr.subarray(1,-1)
< [ "b", "c", "fd", "ze"]
Test2:
bigArr.subarray(2,-2)
< [ "c", "fd"]
Test3:
bigArr.subarray(2)
< [ "c", "fd", "ze"]
Có thể dễ dàng hơn cho các nhà phát triển đến từ ngôn ngữ khác (.ie: Groovy)
Các câu hỏi thực sự là yêu cầu cho một mới mảng, vì vậy tôi tin rằng một giải pháp tốt hơn là nên kết hợp Abdennour TOUMI's answer với một chức năng nhân bản:
function clone(obj) {
if (null == obj || "object" != typeof obj) return obj;
var copy = obj.constructor();
for (var attr in obj) {
if (obj.hasOwnProperty(attr)) copy[attr] = obj[attr];
}
return copy;
}
[http://stackoverflow.com/questions/728360/most-elegant-way-to-clone-a-javascript-object]
với clone()
chức năng, bây giờ bạn có thể làm như sau:
Array.prototype.subarray=function(start, end) {
if(!end){
end = this.length;
}
var newArray = clone(this);
return newArray.slice(start, end);
};
Nếu không có bản sao, bạn sẽ mất mảng ban đầu của mình.
Ví dụ:
var array = [1,2,3,4,5];
console.log(array.subarray(2)); //print the subarray [3, 4, 5, subarray: function]
console.log(array); //print the original array [1, 2, 3, 4, 5, subarray: function]
Tôi không nghĩ rằng slice sẽ thay đổi mảng ban đầu. – Mani
'Array.prototype.slice' trả về một bản sao rồi. 'Array.prototype.splice' sửa đổi mảng ban đầu. –
Phương thức slice() trả về một bản sao nông của một phần của một mảng thành một đối tượng mảng mới. Xem [Mạng nhà phát triển Mozilla] (https://developer.mozilla.org/en-S/docs/Web/JavaScript/Reference/Global_Objects/Array/slice). Đã bỏ phiếu. – TheCrazyProgrammer
var array_one = [11, 22, 33, 44,55];
var ar2 = ar.slice(1, array_one.length-1);
console.log(array_2)
- 1. Subarray từ NSMutableArray
- 2. Mongo: làm thế nào để tìm thấy bởi ObjectId được lưu trữ trong một subarray?
- 3. Làm thế nào để bạn trích xuất một subarray từ một mảng trong một chức năng bảng tính?
- 4. PHP Sắp xếp mảng By subarray Value
- 5. Làm thế nào để hợp nhất subarray trong PHP dễ dàng nhất?
- 6. Làm thế nào để có được một mảng hình ảnh?
- 7. Làm thế nào để có được mảng kết hợp như đầu ra từ jQuery.map?
- 8. Làm thế nào để có được các yếu tố ngẫu nhiên từ một mảng
- 9. Làm thế nào để có được các giá trị ngẫu nhiên từ mảng trong C#
- 10. Làm thế nào để có được cùng một giá trị từ hai mảng trong PHP?
- 11. MongoDB cập nhật các yếu tố cụ thể từ subarray
- 12. Làm thế nào để có được classpath từ classloader?
- 13. Làm thế nào để có được char ép từ System.Windows.Input.KeyEventArgs?
- 14. Làm thế nào để có được dụ từ Ninject
- 15. làm thế nào để có được văn bản từ TextView
- 16. C# làm thế nào để có được Byte [] từ IntPtr
- 17. Làm thế nào để có được đầu ra từ subprocess.Popen()
- 18. Làm thế nào để có được Backbone.Collection từ Backbone.LocalStorage
- 19. Làm thế nào để đọc Mảng từ iOS plist
- 20. Làm thế nào để cư một Spinner từ String mảng
- 21. Làm thế nào để tạo CGPathRef từ Mảng các điểm
- 22. Làm thế nào để có được và sử dụng mảng kết hợp từ YAML để hành động trong Symfony?
- 23. Làm thế nào để có forEach có sẵn trên mảng giả được trả về bởi querySelectorAll?
- 24. Làm thế nào để tách một mảng?
- 25. Làm thế nào để chuyển đổi mảng thành chuỗi từ được tách biệt bằng dấu phẩy?
- 26. Làm thế nào để trừ một mảng khỏi mảng?
- 27. Làm thế nào để có được giá trị lớn nhất từ NSArray có chứa từ điển?
- 28. Làm thế nào để có được java.util.Map từ truy vấn hibernate?
- 29. Làm thế nào để hiển thị Không có Dữ liệu khi mảng quan sát được trống?
- 30. MongoDB -Làm thế nào để tìm hồ sơ có chứa từ khóa mảng nhất định
bạn đã thử [lát] (http://www.w3schools.com/jsref/jsref_slice_array.asp)? –