我有一个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;
当前回答
var myObject = new Object();
myObject["firstname"] = "Gareth";
myObject["lastname"] = "Simpson";
myObject["age"] = 21;
Object.values(myObject).lengthObject.entries(myObject).length对象.keys(myObject).length
其他回答
您可以简单地对任何对象使用Object.keys(obj).length来获取其长度。keys返回一个包含所有对象键(财产)的数组,使用相应数组的长度可以方便地找到该对象的长度。你甚至可以为此编写一个函数。让我们发挥创意,并为其编写一个方法(以及更方便的getter属性):
函数objLength(obj){return Object.keys(obj).length;}console.log(objLength({a:1,b:“summit”,c:“无意义”}));//工作非常好var obj=新对象();obj['fish']=30;obj['ullified content']=null;console.log(objLength(obj));//它也按照您的方式工作,即使用Object构造函数创建它Object.prototype.getLength=函数(){return Object.keys(this).length;}console.log(obj.getLength());//你也可以把它写成一个方法,这样做效率更高Object.defineProperty(Object.prototype,“length”,{get:function(){return Object.keys(this).length;}});console.log(对象长度);//可能最有效的方法是这样做的,并在上面进行了演示,它为对象设置了一个名为“length”的getter属性,该属性返回getLength(this)或this.getLength()的等效值
使用Object.entries方法获取长度是实现此目的的一种方法
const objectLength=obj=>Object.entries(obj).length;常量人={id:1,name:“John”,年龄:30岁}常量汽车={类型:2,颜色:“红色”,}console.log(对象长度(人));//3.console.log(objectLength(car));//2.
如果您使用的是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>
使用ECMAScript 6内置Reflect对象,您可以轻松计算对象的财产:
Reflect.ownKeys(targetObject).length
它将为您提供目标对象自身财产的长度(重要)。
Reflect.ownKeys(target)
返回目标对象自身(非继承)属性的数组钥匙。
那是什么意思?为了解释这一点,让我们看看这个例子。
function Person(name, age){
this.name = name;
this.age = age;
}
Person.prototype.getIntro= function() {
return `${this.name} is ${this.age} years old!!`
}
let student = new Person('Anuj', 11);
console.log(Reflect.ownKeys(student).length) // 2
console.log(student.getIntro()) // Anuj is 11 years old!!
您可以在这里看到,当对象仍然从其父对象继承属性时,它只返回了自己的财产。
有关更多信息,请参阅:Reflect API
var myObject=新对象();myObject[“firstname”]=“Gareth”;myObject[“lastname”]=“Simpson”;myObject[“age”]=21;var size=JSON.stringify(myObject).length;document.write(大小);
JSON.stringify(myObject)