【问题标题】:Javascript Object.length based on key of last object [duplicate]基于最后一个对象的键的Javascript Object.length [重复]
【发布时间】:2015-06-06 17:22:37
【问题描述】:

我有一个过滤器列表,要使用简单的key:value 循环应用于数据集。当用户选择过滤器时,将使用这些 key:value 对创建一个新对象。但是,如果有 4 个过滤器,并且用户只选择了第 1 个和第 3 个过滤器项,则创建的新对象的结构如下:

var newObject = {
  0: {
    key: value,
  },
  2: {
    key: value,
  }
}

当我调用newObject.length 时,它返回3。请参阅 Chrome devtools 中的以下内容:

Object.length 似乎基于对象中的最后一个键,而不是对象本身的数量。如何让newObject.length 返回 2 而不是 3?

这是我根据过滤器创建对象的函数:

selectedInModel: function() {
  var selected = [];
  var getInputs = inputService.primaryInputs; // returns filter object
  for (var key in getInputs) {
    if (getInputs[key]["value"]) {
      selected[key] = {
        "value": getInputs[key]["value"],
        "id": getInputs[key]["id"]
      };
    }
  }
  return selected;
};

我怎样才能让Object.length 返回我的对象​​中的数量 个对象?

【问题讨论】:

  • Note 对象默认没有length 属性。数组可以。

标签: javascript loops object


【解决方案1】:

您正在使用[] 作为对象。 length 应该给你最高的索引,不管有多少属性。我会改用对象:

var selected = {};
selected[key] = {
    "value": getInputs[key]["value"],
    "id": getInputs[key]["id"]
};
Object.keys(selected).length;

【讨论】:

    猜你喜欢
    • 2015-08-31
    • 2019-07-25
    • 2013-01-15
    • 1970-01-01
    • 1970-01-01
    • 2011-03-18
    • 2022-01-04
    • 2019-04-21
    相关资源
    最近更新 更多