计算对象函数JavaScript中另一个对象属性的长度

Counting length of another object property within object function -- JavaScript?

本文关键字:属性 一个对象 对象 函数 JavaScript 计算      更新时间:2023-09-26

我是JavaScript对象的新手,所以请耐心等待。

这是我的JavaScript:

var dragSources = {
  elementSources: {
    squareSource: document.getElementById('squareSource'),
    circleSource: document.getElementById('circleSource')
  },
  ifDragSource: function(elem) {
    console.log(this.elementSources.length);
  }
};

如果你看看console.log(this.elementSources.length);,你可能会知道我正在试图获得elementSources属性的长度。但是,它返回undefined。我做错了什么?

它是一个对象,而不是数组,因此它没有length属性。

您可以使用Object.keys(this.elementSources).length来获取密钥的数量。

.keys()方法本质上返回对象的键的数组。

在这种情况下,Object.keys(this.elementSources)返回:

["squareSource", "circleSource"]

然后我们得到这个数组的长度,它是2。

var dragSources = {
  elementSources: {
    squareSource: document.getElementById('squareSource'),
    circleSource: document.getElementById('circleSource')
  },
  ifDragSource: function(elem) {
    console.log(Object.keys(this.elementSources).length);
  }
};
dragSources.ifDragSource(); // 2

从技术上讲,如果您在代码中需要length属性,则必须将长度值直接存储在对象中。使用Object.key函数会降低代码效率。每次调用该函数访问该值时,都必须一次又一次地重新运行同一个函数。

为了访问js数组中的length属性,BIG O总是等于1。因为当更新数组时,length属性会随之更新但在这种情况下,大O将是Object的大小,并且(O)=n