以下是我迄今为止的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”,如果是这样,则获取倒数第三个项目。


当前回答

在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);

其他回答

ES6对象销毁是另一种方法。

常量{length,[length-1]:last}=[1,2,3,4,5]console.log(最后一个)

使用对象析构函数从Array中提取长度属性。您可以使用按[length-1]提取的密钥创建另一个动态密钥,并将其分配给最后一个,全部在一行中。

我宁愿使用array.pop()而不是索引。

while(loc_array.pop()!= "index.html"){
}
var newT = document.createTextNode(unescape(capWords(loc_array[loc_array.length])));

通过这种方式,您总是得到index.html之前的元素(假设您的数组将index.html作为一个项目)。注意:您将丢失数组中的最后一个元素。

如果想要一次性获得最后一个元素,可以使用Array#splice():

lastElement = document.location.href.split('/').splice(-1,1);

这里,不需要将拆分的元素存储在数组中,然后获取最后一个元素。如果获得最后一个元素是唯一的目标,那么应该使用这个。

注意:这将通过删除最后一个元素来更改原始数组。将splice(-1,1)看作弹出最后一个元素的pop()函数。

使用reduceRight:

[3,2,1,5].reduceRight((a,v) => a ? a : v);
var str = ["stackoverflow", "starlink"];
var last = str[str.length-1];//basically you are putting the last index value into the array and storing it in la