【发布时间】: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