算法【简单-2619.数组原型对象的最后一个元素】

33 阅读2分钟

Hello,大家好,我是disguiseFish,我已经摆烂很长一段时间啦,摆烂的日子过得快乐又飞快~不知不觉都一年多了!!

最近在卷算法,但其实我的逻辑思维能力偏弱以及我之前就没有刷过算法!!所以我决定,每天写一点算法提升自己的逻辑思维!接下来我会从简入深的顺序来卷算法,同时会把看过的算法记录在这个平台~ 共勉!!!

2619.数组原型对象的最后一个元素

请你编写一段代码实现一个数组方法,使任何数组都可以调用 array.last() 方法,这个方法将返回数组最后一个元素. 如果数组中没有元素,则返回 -1 你可以假设数组是 Jso.parse 的输出结果

    示例 1 :
    输入: nums = [null,,3]
    输出:3
    解释: 调用 nums.last() 后返回最后一个元素: 3.
    示例 2 :
    输入: nums = []
    输出: -1
    解释: 因为此数组没有元素,所以应该返回 -1/**  
     * @return {null|boolean|number|string|Array|Object}  
     */  
    Array.prototype.last = function() {  

    };  

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

方法1

利用if检查和数组长度直接判断

Array.prototype.last = function() {  
    if(this.length === 0) {
        return -1
    }
    return this[this.length-1]
}; 

方法2

三元判断&数组长度

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

方法3

pop方法 -- 注意不能直接判断vlaue是否为true 因为可能是 '0'

Array.prototype.last = function() {  
    let value = this.pop()
    return value !== undefined ? value : -1
}; 

方法4

用数组的slice方法 该方法返回的是一个数组 需要拿到对应的第0项

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

方法5

适用于ECMAScript 2022 及 之后版本 findLast方法

Array.prototype.last = function() {  
    return this.length ? this.findLast(item=>item) : -1
}; 

方法6

利用 ?? Nullish合并运算符 和 Array.prototype.at() 方法

空值合并运算符 (??) 是一个逻辑运算符,仅当左侧(第一个参数)为空或未定义时才返回运算符(第二个参数)的右侧。 在所有其他情况下,它返回第一个参数。

Array.prototype.at(),方法接收一个整数值并返回该索引的项目,允许正数和负数。负整数从数组中的最后一个项目开始倒数。

Array.prototype.last = function() {  
// 如果at有输出则表示能拿到最后一个值 则输出当前值 ; 如果为空的话则返回第二个参数 -1
    return this.at(-1)  ?? -1
}; 

方法7

利用 ?? Nullish合并运算符

Array.prototype.last = function() {  
// 如果at有输出则表示能拿到最后一个值 则输出当前值 ; 如果为空的话则返回第二个参数 -1
    return this[this.length-1]  ?? -1
};