不使用[] Brackets访问Javascript数组

ovi*_*ile 1 javascript arrays

我正在尝试在方括号用于宏替换的环境中编写一些javascript,因此它们不能在脚本中正常使用.

如果我创建一个数组作为对象,new Array()我可以使用push()和pop()来访问元素,但对于本机数组,我无法找到一种方法来获取元素而不使用括号.例如,从以下位置返回的数组:

var allElements = document.getElementsByTagName("*");
Run Code Online (Sandbox Code Playgroud)

有没有办法将一个本机数组分配给一个Array对象,所以我可以使用push()和pop(),还是有另一种方法可以进入?

nem*_*isj 6

是的,你可以使用prototype和slice方法(例如在IE中不起作用):

var index = 1;
Array.prototype.slice.call(allElements,index,index+1);
Run Code Online (Sandbox Code Playgroud)

对于IE,我能想到的唯一方法是将所有元素从集合复制到数组:

var newarr = new Array();
for(var i=0;i<allElements.length;i++){
    newarr.push(allElements[i]);
}
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用此功能(在IE和Firefox中工作):

window.atIndex = function(array,index){
    return eval("array" + String.fromCharCode(91) + String(index) + String.fromCharCode(93));
}
Run Code Online (Sandbox Code Playgroud)

通过使用获取任何项目 atIndex(allElements,0);

  • 没有进入IE,抱歉."错误:期望JScript对象" (3认同)