JavaScript-js 关联数组长度计算方法

UI设计界面 UI设计界面 主题:1059 回复:2190

JavaScript-js 关联数组长度计算方法

甜柠檬 发布于 2017-01-19 字数 266 浏览 1174 回复 3

下面是我定义了一个关联数组:

var myArray = new Array();
myArray["uid"] = "123456";
myArray["username"] = "huhuhu";
myArray["nickname"] = "lalala";
myArray["sex"] = "man";
alert(myArray.length);

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

支持 Markdown 语法,需要帮助?

评论(3

浮生未歇 2017-04-12 3 楼

按照你的需求myArray的类型object了,所以你要的是计算这个对象的属性个数
我写了一个函数你试一下

function getObjLength(obj){
var count=0;
for(var name in obj){
if(typeof obj[name] == "object"){
count+=getObjLength(obj[name]);
}else{
count++;
}
}
return count;
}
alert(getObjLength(myArray));

虐人心 2017-02-05 2 楼

phpjs上的一个count函数:

 function count (mixed_var, mode) {
// Count the number of elements in a variable (usually an array)
//
// version: 1109.2015
// discuss at: http://phpjs.org/functions/count // + original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
// + input by: Waldo Malqui Silva
// + bugfixed by: Soren Hansen
// + input by: merabi
// + improved by: Brett Zamir (http://brett-zamir.me) // + bugfixed by: Olivier Louvignes (http://mg-crea.com/)
// example 1: count([[0,0],[0,-4]], 'COUNT_RECURSIVE');
//
returns 1: 6
// example 2: count({'one' : [1,2,3,4,5]}, 'COUNT_RECURSIVE');
//
returns 2: 6

var key, cnt = 0;

if (mixed_var === null || typeof mixed_var === 'undefined') {
    return 0;
} else if (mixed_var.constructor !== Array && mixed_var.constructor !== Object) {        
    return 1;
}

if (mode === 'COUNT_RECURSIVE') {
    mode = 1;    }
if (mode != 1) {
    mode = 0;
}
 for (key in mixed_var) {
    if (mixed_var.hasOwnProperty(key)) {
        cnt++;
        if (mode == 1 && mixed_var[key] && (mixed_var[key].constructor === Array || mixed_var[key].constructor === Object)) {
            cnt += this.count(mixed_var[key], 1);            }
    }
}

return cnt;

}

浮生未歇 2017-01-31 1 楼
var myArray = new Array();
myArray["uid"] = "123456";
myArray["username"] = "huhuhu";
myArray["nickname"] = "lalala";
myArray["sex"] = "man";
alert(Object.keys(myArray).length);

如果是多维的话,需要利用循环递归的办法计算
不支持的话,只能遍历了

Object.size = function(obj) {
    var size = 0, key;
    for (key in obj) {
        if (obj.hasOwnProperty(key)) size++;
    }
    return size;
};
alert(Object.size(myArray));