配列の要素をどんな整数のインデックスでも取得できる関数を書いた。
function getItemAt(target, index) {
if (index < 0) {
return arguments.callee(target.concat().reverse(), -(index + 1));
} else {
return target[index % target.length];
}
}
usage
alert(getItemAt(["a", "b", "c", "d", "e"], -1));// e alert(getItemAt(["a", "b", "c", "d", "e"], 6));// b
os0x さんのコメントを元に改正 (2009.02.03)
function getItemAt(target, index) {
return target.slice(index % target.length)[0];
}
[1,2,3].slice(-1)[0],
[1,2,3].slice(-2)[0],
[1,2,3].slice(-3)[0]
とかどうでしょう?
なるほど、slice を使ったらスマートになりました。
ありがとうございました。