我有以下数组:
var list = ['first', 'second', 'third'];
现在我可以通过它们的索引分别访问第一,第二和第三个元素,分别为0 1和2.如果我尝试访问list[4]
,我将收到错误。
有没有办法这样,如果我尝试访问数组外的第n个元素,计数从头开始?以便list[4]
返回“第一个”?
请记住,数字也可能是数组本身长度的多倍。
答案 0 :(得分:1)
访问不存在的数组元素不会引发任何错误,但返回undefined
var list = ['first', 'second', 'third'];
console.log(list[3]);
// undefined
console.log(list[4]);
// undefined
要包装数组,当索引大于长度时,则可以使用mod运算符,如下所示
console.log(list[3 % list.length]);
// first
console.log(list[4 % list.length]);
// second
答案 1 :(得分:0)
我在这里为你写了一个例子:http://jsfiddle.net/h8V9N/
Array.prototype.at = function(index) {
return index >= this.length ? this[0] : this[index];
};
// usage
var list = ['first', 'second', 'third'];
console.log( list.at(88) );
我正在添加新方法' at'到Array对象原型。