7cc@はてなブログ

JavaScriptとかとか

配列のすべてにアクセスする記述いろいろ JavaScript

document.getElementsByTagNameとか配列(風)のもの全てになにかしたい時にi<e.lengthと書く必要がないことが分かったので他の書き方も書いておく。

var array = [1, 2, null, 3, false]

var arr1 = []
  , arr2 = []
  , arr3 = []
  , arr4 = []
  , arr5 = []
  , arr6 = []

for (var i=0; i<array.length; i++) {
  arr1.push(array[i])
}

for (var i=0; array[i]; i++) {
  arr2.push(array[i])
}

for (var i=-1; array[++i];) {
  arr3.push(array[i])
}

for (var i=array.length-1; 0<=i; i--) {
  arr4.push(array[i])
}

for(var i=array.length; 0 <= --i;) {
  arr5.push(array[i])
}

for (var i=array.length; i--;) {
  arr6.push(array[i])
}

console.log(arr1)
console.log(arr2) // [1, 2] falseで止まる
console.log(arr3) // [1, 2] falseで止まる
console.log(arr4)
console.log(arr5)
console.log(arr6)

結論

あるタグすべてをremoveChildとかする場合などデクリメントでなければならないときもあるので一つ選ぶなら6かな?

順序を逆にしたいならreverseで簡単にできるし、あるいunshiftは遅いので

arr4[i] = array[i]