问题
我不是一个真正的初学者,但这可能是一个初学者的问题。我试图增加ES6 JavaScript对象的count属性。这个最小代码示例的两个最成功的版本(例如,它们提供了错误的信息,但没有错误)为每个水果的count属性返回“NaN”或“1”。这似乎应该可行,但显然递增数字对象属性并不是一个直观的概念。
所以,我想做的是:
创建水果对象作为键,以及它们出现的次数。结束对象如下所示:
fruitsObj[fruit].name
fruitsObj[fruit].count
所以对于“苹果”:
fruitsObj.apple.name // apple
fruitsObj.apple.count // 4
但是,我收到的输出是:
{apple: {â¦}, pear: {â¦}, banana: {â¦}, orange: {â¦}, kumquat: {â¦}}
apple:{name: "apple", count: NaN}
banana:{name: "banana", count: NaN}
kumquat:{name: "kumquat", count: NaN}
orange:{name: "orange", count: NaN}
pear:{name: "pear", count: NaN}
__proto__: Object
在版本2中,我尝试了存在性和类型检查,但没有成功。每次计数的唯一值为“1”:
{apple: {â¦}, pear: {â¦}, banana: {â¦}, orange: {â¦}, kumquat: {â¦}}
apple:{name: "apple", count: 1}
banana:{name: "banana", count: 1}
kumquat:{name: "kumquat", count: 1}
orange:{name: "orange", count: 1}
pear:{name: "pear", count: 1}
__proto__: Object
我不确定我在这里做错了什么。
我的代码
版本1:
// Declare an array of fruits
var fruitsArr = ['apple', 'pear', 'apple', 'banana', 'orange', 'kumquat', 'orange', 'apple', 'apple', 'orange'];
var fruitsObj = {};
// Loop through each fruit storing name and count.
fruitsArr.forEach(function(fruit, i) {
// Create each named-fruit property in object as a sub-object.
fruitsObj[fruit] = {};
fruitsObj[fruit].name = fruit;
// FAILS with NaN!
fruitsObj[fruit].count = ++fruitsObj[fruit].count;
});
console.log(fruitsObj);
版本2:
// Declare an array of fruits
var fruitsArr = ['apple', 'pear', 'apple', 'banana', 'orange', 'kumquat', 'orange', 'apple', 'apple', 'orange'];
var fruitsObj = {};
// Loop through each fruit storing name and count.
fruitsArr.forEach(function(fruit, i) {
// Create each named-fruit property in object as a sub-object.
fruitsObj[fruit] = {};
fruitsObj[fruit].name = fruit;
// if fruit count exists and is greater than zero
if (fruitsObj[fruit].count != undefined && fruitsObj[fruit].count > 0) {
// increment it
fruitsObj[fruit].count++;
} else {
// set it to one
fruitsObj[fruit].count = 1;
}
});
console.log(fruitsObj);
我咨询的链接
我回顾了一堆让我陷入困境的帖子和链接。尽管如此,他们中没有一个明确地解决了我的问题,我可以说。
我的问题
-
为什么我的计数器不递增,而是返回“NaN”?
-
在赋值之前,是否有特殊的方法将对象属性声明为数字?
-
在我的理解中,我遗漏了什么来完成这项工作?如何增加对象计数属性?