2013-01-18 60 views
26

Làm cách nào để thực hiện chuyển đổi này?mảng lát cắt từ N đến phần tử cuối

["a","b","c","d","e"] // => ["c", "d", "e"] 

Tôi đã suy nghĩ rằng slice thể làm điều này, nhưng ..

["a","b","c","d","e"].slice(2,-1) // [ 'c', 'd' ] 
["a","b","c","d","e"].slice(2,0) // [] 

Trả lời

52

Không sử dụng đối số thứ hai:

Array.slice(2); 

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/slice

Nếu kết thúc bị bỏ qua, các chất chiết xuất từ ​​slice đến cuối chuỗi.

+0

ok ... nhưng điều gì sẽ xảy ra nếu tôi không thể dự đoán liệu kết thúc của lát có được xác định hay không. Trong python, chúng ta có str [start: None] để cắt đến cuối. Làm thế nào tôi có thể tương đương làm điều đó trên javascript? – yota

+0

@yota Nếu bạn biết độ dài của mảng, bạn có thể truyền nó như đối số thứ hai: 'arr.slice (2, arr.length)'. Nếu đối số thứ hai vượt quá độ dài mảng, nó sẽ vẫn trả về 'bắt đầu' cho đến khi kết thúc chuỗi. Nếu điều đó không hiệu quả với bạn, bạn sẽ cần một tuyên bố nếu. –

4

Chỉ cần cung cấp cho các chỉ số bắt đầu như bạn muốn phần còn lại của dữ liệu từ mảng ..

["a","b","c","d","e"].splice(2) => ["c", "d", "e"] 
4

Một điều cần chú liên quan đến câu trả lời bằng cách @insomniac là spliceslice hai hoàn toàn khác nhau chức năng, với sự khác biệt chính là:

  • splice điều khiển mảng gốc.
  • slice trả về một tập hợp con của mảng ban đầu, với mảng gốc còn lại bị ảnh hưởng.

Xem: http://ariya.ofilabs.com/2014/02/javascript-array-slice-vs-splice.html để biết thêm thông tin.

Các vấn đề liên quan