[1, 55, 77, 88] // ...would return [55, 77, 88]
thêm ví dụ:
[1, 55, 77, 88, 99, 22, 33, 44] // ...would return [88, 99, 22, 33, 44]
[1] // ...would return []
arr.slice(1).slice(-5)
[1, 55, 77, 88] // ...would return [55, 77, 88]
thêm ví dụ:
[1, 55, 77, 88, 99, 22, 33, 44] // ...would return [88, 99, 22, 33, 44]
[1] // ...would return []
arr.slice(1).slice(-5)
Câu trả lời:
Bạn có thể gọi:
arr.slice(Math.max(arr.length - 5, 1))
Nếu bạn không muốn loại trừ yếu tố đầu tiên, hãy sử dụng
arr.slice(Math.max(arr.length - 5, 0))
arr.slice(1).slice(-5)
>.>. cũng có một số bạn không đọc được tiêu đề vì OP muốn loại trừ kết quả đầu tiên của mảng: |
arr.slice(Math.max(arr.length - 5, 0))
?
1
và không 0
.
Đây là một cái tôi chưa từng thấy thậm chí còn ngắn hơn
arr.slice(1).slice(-5)
Chạy đoạn mã dưới đây để chứng minh nó làm những gì bạn muốn
var arr1 = [0, 1, 2, 3, 4, 5, 6, 7],
arr2 = [0, 1, 2, 3];
document.body.innerHTML = 'ARRAY 1: ' + arr1.slice(1).slice(-5) + '<br/>ARRAY 2: ' + arr2.slice(1).slice(-5);
Một cách khác để làm điều đó là sử dụng lodash https://lodash.com/docs#rest - đó là điều tất nhiên nếu bạn không phải tải một tệp rút gọn javascript lớn nếu bạn cố gắng làm điều đó từ trình duyệt của mình.
_.slice(_.rest(arr), -5)
Thử cái này:
var array = [1, 55, 77, 88, 76, 59];
var array_last_five;
array_last_five = array.slice(-5);
if (array.length < 6) {
array_last_five.shift();
}
var y = [1,2,3,4,5,6,7,8,9,10];
console.log(y.slice((y.length - 5), y.length))
bạn có thể làm được việc này!
Cách ES6:
Tôi sử dụng phép gán hủy cho mảng để lấy first
và rest
các phần tử còn lại và sau đó tôi sẽ thực hiện năm phương thức cuối cùng rest
với phương thức lát :
const cutOffFirstAndLastFive = (array) => {
const [first, ...rest] = array;
return rest.slice(-5);
}
cutOffFirstAndLastFive([1, 55, 77, 88]);
console.log(
'Tests:',
JSON.stringify(cutOffFirstAndLastFive([1, 55, 77, 88])),
JSON.stringify(cutOffFirstAndLastFive([1, 55, 77, 88, 99, 22, 33, 44])),
JSON.stringify(cutOffFirstAndLastFive([1]))
);