JS配列の長さ問題

6808 ワード

jsと言っても行列の長さを取っても、最初にarray.lengthを思い出します.
しかしながら、lengthには明らかな欠陥がある:
たとえば:
var str = [];

str[99] = 99;

console.log(str.length);
得られた結果は100です.
var str = [];

str['name'] = 'javascript';

str['test'] = 'sdsdsdsdsd';

console.log(str.length);
得られた結果は0です
var str = {'name':'javascript','test':'sdsdsdsdsd'};

console.log(str.length);
得られた結果はundefinedです.
したがって、配列の長さを計算するためには、カスタム関数が望ましいです.特に、関連配列とオブジェクト配列!
ユーザー定義の長さ関数が使用されます.
type of
.toString().length
for in 
length
くりを一つあげる:
function a_count(atr) {
    var s = typeof str;
    //if(s == 'string'){}
    if(s == 'object'){
        if(str.toString().length == 0){
            return 0;
        }else{
            var i = 0;
            for(var j in str){
                if(str[j].length != undefined){
                    i++;
                }
            }
            return i;
        }
    }
}
function b_count(str) {
    var s = typeof str;
    if(s == 'object'){
        if(str.toString().length == 0){
            return 0;
        }else{
            var i = 0;
            for(var j in str){
                if(str[j].length != undefined){
                    i = str[j].length;
                }
            }
            return i;
        }
    }
}
以上の栗はそのまま運びません.特定の配列の計算方法です.具体的な書き方はやはり自分の需要によって書きます.まず自分で計算する配列の構造を調整してみます.