Nik*_*iko 12 javascript oop object
当我有这样的JavaScript数组时:
var member = {
"mother": {
"name" : "Mary",
"age" : "48"
},
"father": {
"name" : "Bill",
"age" : "50"
},
"brother": {
"name" : "Alex",
"age" : "28"
}
}
Run Code Online (Sandbox Code Playgroud)
如何计算这个数组中的对象?!
我的意思是如何得到一个计数结果3,因为里面只有3个物体:母亲,父亲,兄弟?!
如果它不是数组,那么如何将其转换为JSON数组?
CMS*_*CMS 24
这不是一个数组,是一个对象文字,你应该迭代对象的自己的属性并计算它们,例如:
function objectLength(obj) {
var result = 0;
for(var prop in obj) {
if (obj.hasOwnProperty(prop)) {
// or Object.prototype.hasOwnProperty.call(obj, prop)
result++;
}
}
return result;
}
objectLength(member); // for your example, 3
Run Code Online (Sandbox Code Playgroud)
hasOwnProperty
应该使用该方法来避免迭代继承的属性,例如
var obj = {};
typeof obj.toString; // "function"
obj.hasOwnProperty('toString'); // false, since it's inherited
Run Code Online (Sandbox Code Playgroud)
小智 7
您可以使用 Object.keys() 方法返回给定对象自己的可枚举属性的数组:
Object.keys(member).length;
Run Code Online (Sandbox Code Playgroud)
这不是一个数组,它是一个对象文字.
您可以迭代对象属性并计算它拥有的数量:
var count = 0;
for (var k in obj) {
// if the object has this property and it isn't a property
// further up the prototype chain
if (obj.hasOwnProperty(k)) count++;
}
Run Code Online (Sandbox Code Playgroud)