JavaScript-获取数组中除最后一项之外的所有内容

这是我的暗号:

 function insert(){
var loc_array = document.location.href.split('/');
var linkElement = document.getElementById("waBackButton");
var linkElementLink = document.getElementById("waBackButtonlnk");
linkElement.innerHTML=loc_array[loc_array.length-2];
linkElementLink.href = loc_array[loc_array.length];
}

我希望 linkElementLink.href抓取数组中除最后一项之外的所有内容。现在它坏了,在它之前的项目得到倒数第二个项目。

80614 次浏览

我不太清楚您要做什么,但是您可以使用 slice对数组进行切割:

loc_array = loc_array.slice(0, -1);

linkElementLink.href = loc_array[loc_array.length];在数组中添加一个新的空槽,因为数组从0运行到 array.length-1; 所以返回一个空槽。

如果使用括号,则只能获取一个索引的内容。我不确定这是不是你想要的?下一节将介绍如何获取多个索引。

要获得. href 所需的内容,需要对数组进行切片。 linkElementLink.href = loc_array.slice(0,loc_array.length-1); 或者从头数到尾用负数 linkElementLink.href = loc_array.slice(0,-1); 这是最快的方法。

还要注意,当直接从数组获取内容时,您将获得与 .toString()方法相同的内容,即 item1、 item2、 item3。如果你不想要逗号,你需要使用 .join()。就像 array.join('-')会返回 item1-item2-item3。下面是所有数组方法 http://www.w3schools.com/jsref/jsref_obj_array.asp的列表。这是一个很好的资源做到这一点。

取决于是否要重用数组,您可以简单地使用 pop()方法一次删除最后一个元素。

优先使用 pathname而不是 href来检索链接的路径部分。否则,如果有一个 ?query#fragment后缀,或者路径是 /(没有父) ,就会得到意想不到的结果。

linkElementLink.href= location.pathname.split('/').slice(0, -1).join('/');

(不过,你当然可以说:)

linkElementLink.href= '.';

别这样:

linkElement.innerHTML=loc_array[loc_array.length-2];

从任意字符串设置 HTML 是危险的。如果您从中获取文本的 URL 包含 HTML 中特殊的字符,如 <&,则用户可以注入标记。如果你能在 URL 中找到 <script>(这是不可能的,因为它是无效的,但有些浏览器可能会让你这么做) ,你就会有跨站点脚本的安全漏洞。

要设置元素的文本而不是 HTML,可以使用 document.createTextNode('string')并将其附加到元素,或者使用 innerText(IE)或 textContent(其他现代浏览器)的分支代码。

如果使用 洛达什,可以使用 _.initial(array):

_. initial (array) : 获取 array 中除最后一个元素外的所有元素。

例如:

_.initial([1, 2, 3]);
// → [1, 2]

。片(你想要的数字)

如果您只想要数组中的前4个元素,那么它的 array.slice (3)

从数组的末尾开始做负数