I have a list of filters to be applied to a data set using a simple key:value
loop. When the user selects a filter, a new object is created with those key:value
pairs. However, if there are 4 filters, and the user has selected only the 1st and 3rd filter items, the new object that is created is structured like this:
var newObject = {
0: {
key: value,
},
2: {
key: value,
}
}
When I call newObject.length
, it returns 3
. See the following from Chrome devtools:
Object.length
seems to be based off of the last key in the object, rather than the number of objects themselves. How can I get the newObject.length
to return 2 instead of 3?
Here is my function that creates the object based on the filters:
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;
};
How can I get Object.length
to return the number of objects in my object?