close

Object.key(obj).length來取(但是要看瀏覽器有沒有支援,IE9以後才有支援)

--

轉自 http://jayden.logdown.com/posts/164794-javascript-an-objects-length-and-the-length-of-the-array

--

 

今天看到一個特別的例子,如下:

var arr = [];
arr[0]  = 'a';
arr[1]  = 'b';
arr.foo = 'c';
alert(arr.length);

相信很多人的直覺都是alert3。但偏偏javascript就是給你alert2
經過研究一下才發現,原來在Javascripr裡面,物件長度跟陣列長度不能夠混為一談。

當我們要取陣列(array)長度的時候,可以直接用arr.length來取得。
但是若arr是一個物件(object)的話,便無法用length來取得長度。
所以你用length屬性去取東西的時候,當然就只會回傳Array認得的元素啦!

如果我們直接用length來取得物件(object)長度會怎樣呢? 舉例:

var obj = {};//把陣列改成物件

obj[0]  = 'a';
obj[1]  = 'b';
obj.foo = 'c';
alert(obj.length);

其結果會是undefined

要取得物件(object)的長度有兩個辦法。

  1. 用迴圈來取
var count = 0;
var item;
for(item in obj){
   if (obj.hasOwnProperty(i)) {
        count++;
    }
}
  1. 用Object.key(obj).length來取(但是要看瀏覽器有沒有支援,IE9以後才有支援)
Object.key(obj).length
--

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 dizzy03 的頭像
    dizzy03

    碎碎念

    dizzy03 發表在 痞客邦 留言(0) 人氣()