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
};