LeetCode 2619. Array Prototype Last | JavaScript

更新 發佈閱讀 5 分鐘

Problem

Description

Write code that enhances all arrays such that you can call the array.last() method on any array and it will return the last element. If there are no elements in the array, it should return -1.

You may assume the array is the output of JSON.parse.


Example 1:

Input: nums = [null, {}, 3]
Output: 3
Explanation: Calling nums.last() should return the last element: 3.

Example 2:

Input: nums = []
Output: -1
Explanation: Because there are no elements, return -1.

 

Constraints:

  • arr is a valid JSON array
  • 0 <= arr.length <= 1000



Starter

/**
 * @return {null|boolean|number|string|Array|Object}
 */

Array.prototype.last = function() {

};

/**
 * const arr = [1, 2, 3];
 * arr.last(); // 3
 */



Solution

1. Array.prototype.last = function() { … } 這段是幫所有陣列新增一個方法。

  • Array.prototype 上新增了一個名為 last 的方法。
  • 因為所有陣列都會沿著原型鏈找方法,所以之後所有陣列都能呼叫 last()


2. arr.at() 是 ES2022 新增的陣列方法,用來透過索引取得元素

特點:

  • 支援正數索引(從前面數)。
  • 支援負數索引(從後面數,-1 = 最後一個元素)。
  • 不會修改原陣列
  • 如果索引超出範圍,回傳 undefined


語法:

arr.at(index)
  • index:要取的元素索引,支援負數。


基本範例:

const arr = [10, 20, 30, 40, 50];

// 正數索引
console.log(arr.at(0)); // 10
console.log(arr.at(2)); // 30

// 負數索引
console.log(arr.at(-1)); // 50 最後一個
console.log(arr.at(-2)); // 40 倒數第二個

// 超出範圍
console.log(arr.at(10)); // undefined
console.log(arr.at(-10)); // undefined


與傳統索引對比:

console.log(arr[arr.length - 1]); // 50
console.log(arr.at(-1)); // 50

差異:

  • .at(-1) 語意更明確,可直接取「最後一個元素」。傳統方式 arr[arr.length - 1] 可用於所有 JS 環境,但不直覺,特別是倒數第 N 個元素時。


空陣列與邊界:

const empty = [];
console.log(empty.at(0)); // undefined
console.log(empty.at(-1)); // undefined
  • 不會 throw error,只回傳 undefined



Code

/**
* @return {null|boolean|number|string|Array|Object}
*/

Array.prototype.last = function() {
return this.length === 0 ? -1 : this.at(-1);
};

/**
* const arr = [1, 2, 3];
* arr.last(); // 3
*/


喜歡我的文章,拍五下~

留言
avatar-img
Chieh 的沙龍
0會員
3內容數
🌱 Currently learning front-end
你可能也想看
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
題目敘述 Make Two Arrays Equal by Reversing Subarrays 題目給定兩個輸入陣列,請問能否透過子陣列的反轉讓兩個陣列相等? 子陣列的反轉操作次數不受限制。 如果可以,返回True 如果不行,返回False
Thumbnail
題目敘述 Make Two Arrays Equal by Reversing Subarrays 題目給定兩個輸入陣列,請問能否透過子陣列的反轉讓兩個陣列相等? 子陣列的反轉操作次數不受限制。 如果可以,返回True 如果不行,返回False
Thumbnail
Leetcode 精選75題 題目與題解 熱門考點 目錄 (持續更新中) 建議從左側目錄 或者 按Ctrl+F輸入關鍵字進行搜尋
Thumbnail
Leetcode 精選75題 題目與題解 熱門考點 目錄 (持續更新中) 建議從左側目錄 或者 按Ctrl+F輸入關鍵字進行搜尋
Thumbnail
在本章節中,我們將學習JavaScript的基本語法,包括如何註解代碼和如何聲明變數。瞭解這些基礎知識對於進一步學習和使用JavaScript來編寫代碼是非常重要的。
Thumbnail
在本章節中,我們將學習JavaScript的基本語法,包括如何註解代碼和如何聲明變數。瞭解這些基礎知識對於進一步學習和使用JavaScript來編寫代碼是非常重要的。
Thumbnail
題目會給定一個陣列nums和一個目標值goal。計算子陣列總和=goal的數目有多少。演算法包含前綴和和字典的技巧,時間複雜度為O(n),空間複雜度為O(n)。
Thumbnail
題目會給定一個陣列nums和一個目標值goal。計算子陣列總和=goal的數目有多少。演算法包含前綴和和字典的技巧,時間複雜度為O(n),空間複雜度為O(n)。
Thumbnail
題目敘述 題目會給定我們一個輸入陣列nums,要求我們掃描美個陣列元素nums[i],計算除了nums[i]以外的陣列元素連乘積。 題目的原文敘述 測試範例 Example 1: Input: nums = [1,2,3,4] Output: [24,12,8,6] nums[0] 以
Thumbnail
題目敘述 題目會給定我們一個輸入陣列nums,要求我們掃描美個陣列元素nums[i],計算除了nums[i]以外的陣列元素連乘積。 題目的原文敘述 測試範例 Example 1: Input: nums = [1,2,3,4] Output: [24,12,8,6] nums[0] 以
Thumbnail
題目敘述 題目會給定一個有n個整數的陣列nums和指定的k值,問我們長度為k的子陣列的平均值的最大值是多少? 題目的原文敘述 測試範例 Example 1: Input: nums = [1,12,-5,-6,50,3], k = 4 Output: 12.75000 Explanati
Thumbnail
題目敘述 題目會給定一個有n個整數的陣列nums和指定的k值,問我們長度為k的子陣列的平均值的最大值是多少? 題目的原文敘述 測試範例 Example 1: Input: nums = [1,12,-5,-6,50,3], k = 4 Output: 12.75000 Explanati
Thumbnail
題目敘述 題目會給定一個陣列nums 和 給定的k值,要求我們找出陣列裡第k大的元素。 題目的原文敘述 測試範例 Example 1: Input: nums = [3,2,1,5,6,4], k = 2 Output: 5 第二大的元素為5​ Example 2: Input:
Thumbnail
題目敘述 題目會給定一個陣列nums 和 給定的k值,要求我們找出陣列裡第k大的元素。 題目的原文敘述 測試範例 Example 1: Input: nums = [3,2,1,5,6,4], k = 2 Output: 5 第二大的元素為5​ Example 2: Input:
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News