Javascript Object.length 基于最后一个对象的键

标签 javascript loops object

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

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

当我打电话newObject.length时,它返回3 。请参阅 Chrome 开发工具中的以下内容:

devtools object description

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返回我的对象​​中对象的数量

最佳答案

您正在使用[]作为对象。无论有多少属性,length 都应该为您提供最高的索引。我会改用对象:

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

关于Javascript Object.length 基于最后一个对象的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30685572/

相关文章:

javascript - 如何验证输入是否是javascript中的有效日期

linux - 仅当 ping 中断时 Bash 才继续

python - 某人如何检查整个环境以查找 Python 中类的相同实例?

java - 从类名创建对象

javascript - 对象赋值 '=' 和 Object.create() 有什么区别

javascript - 如何在angularjs中观察这个变量

javascript - HTML5 视频自动播放功能在 fullpage.js 中不起作用

javascript - Ajax 调用 Web API

c# - 呼吁代码 Nerd - 嵌套循环的替代方案?

loops - Rust:在 “while let”中访问可变参数