以下是我迄今为止的JavaScript代码:
var linkElement = document.getElementById("BackButton");
var loc_array = document.location.href.split('/');
var newT = document.createTextNode(unescape(capWords(loc_array[loc_array.length-2])));
linkElement.appendChild(newT);
目前,它从URL中获取数组中倒数第二项。但是,我想检查数组中的最后一个项目是否为“index.html”,如果是这样,则获取倒数第三个项目。
通常情况下,你不应该搞乱内置类型的原型,但这里有一个破解/快捷方式:
Object.defineProperty(Array.prototype, 'last', {
get() {
return this[this.length - 1];
}
});
这将允许所有数组对象具有最后一个属性,您可以这样使用:
const letters = ['a', 'b', 'c', 'd', 'e'];
console.log(letters.last); // 'e'
您不应该使用内置类型的原型,因为您永远不会发布新的ES版本,如果新版本使用与自定义属性相同的属性名称,则可能会发生各种中断。此外,这会使其他人很难遵循您的代码,特别是对于加入团队的人。您可以将属性设置为您知道ES版本永远不会使用的属性,例如listLastItem,但这由开发人员自行决定。
或者您可以使用一个简单的方法:
const getLast = (list) => list[list.length - 1];
const last = getLast([1,2,3]); // returns 3
编辑:
最近,我又提出了一个解决方案,我现在认为这是最适合我的需求的:
function w(anArray) {
return {
last() {
return anArray [anArray.length - 1];
};
};
}
根据上述定义,我现在可以说:
let last = w ([1,2,3]).last();
console.log(last) ; // -> 3
名称“w”代表“包装器”。您可以看到如何轻松添加更多除了“last()”之外的方法。
我说“最符合我的需要”,因为这允许我可以很容易地添加其他这样的“助手方法”任何JavaScript内置类型。发生了什么记住Lisp的car()和cdr()例子
在javascript中查找数组最后一个值的多种方法
不影响原始阵列
var arr=[1,2,3,4,5];控制台日志(arr.slice(-1)[0])控制台日志(arr[arr.length-1])const[last]=[…arr].reverse();console.log(最后一个)让copyArr=[…arr];console.log(copyArr.reverse()[0]);
修改原始阵列
var arr=[1,2,3,4,5];console.log(arr.pop())arr.push(5)console.log(…arr.splice(-1));
通过创建自己的助手方法
设arr=[1,2,3,4,5];Object.defineProperty(arr,'last',{get:function(){返回this[this.length-1];}})控制台日志(arr.last);