我有一个过滤器列表,可以使用简单的key:value
应用于数据集。环形。当用户选择过滤器时,将使用 key:value
创建一个新对象。对。但是,如果有 4 个过滤器,并且用户仅选择了第 1 个和第 3 个过滤器项,则创建的新对象的结构如下:
var newObject = {
0: {
key: value,
},
2: {
key: value,
}
}
当我打电话newObject.length
时,它返回3
。请参阅 Chrome 开发工具中的以下内容:
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/