我有一个JavaScript对象。是否有一种内置或公认的最佳实践方法来获取此对象的长度?
const myObject = new Object();
myObject["firstname"] = "Gareth";
myObject["lastname"] = "Simpson";
myObject["age"] = 21;
我有一个JavaScript对象。是否有一种内置或公认的最佳实践方法来获取此对象的长度?
const myObject = new Object();
myObject["firstname"] = "Gareth";
myObject["lastname"] = "Simpson";
myObject["age"] = 21;
当前回答
只需使用此项即可获得长度:
Object.keys(myObject).length
其他回答
在这里,您可以给出任何类型的可变数组、对象、字符串
function length2(obj){
if (typeof obj==='object' && obj!== null){return Object.keys(obj).length;}
//if (Array.isArray){return obj.length;}
return obj.length;
}
以下是James Coglan在CoffeeScript中为那些放弃直接JavaScript的人提供的答案:)
Object.size = (obj) ->
size = 0
size++ for own key of obj
size
这里有一个不同版本的詹姆斯·科根的答案。不要传递参数,只需将Object类原型化并使代码更干净。
Object.prototype.size = function () {
var size = 0,
key;
for (key in this) {
if (this.hasOwnProperty(key)) size++;
}
return size;
};
var x = {
one: 1,
two: 2,
three: 3
};
x.size() === 3;
jsfiddle示例:http://jsfiddle.net/qar4j/1/
Try:Object.values(theObject).length
const myObject=新对象();myObject[“firstname”]=“Gareth”;myObject[“lastname”]=“Simpson”;myObject[“age”]=21;console.log(Object.values(myObject).length);
如果您使用的是AngularJS 1.x,则可以通过创建过滤器并使用以下任何其他示例中的代码以AngularJS的方式进行操作:
// Count the elements in an object
app.filter('lengthOfObject', function() {
return function( obj ) {
var size = 0, key;
for (key in obj) {
if (obj.hasOwnProperty(key)) size++;
}
return size;
}
})
用法
在控制器中:
$scope.filterResult = $filter('lengthOfObject')($scope.object)
或者在您看来:
<any ng-expression="object | lengthOfObject"></any>