尝试增加计数器(当对象的标记存在时)

Attempting to increase the counter, when the object's tag exist

提问人:IHateCoding 提问时间:10/15/2023 更新时间:10/15/2023 访问量:19

问:

在下面的代码中,我想实现,每当标签值是新的时,都应该将其添加到数组中。如果标记不存在,则将添加包含标记和计数器的对象。那行得通。

不起作用的是,当标签已经存在时,我想增加计数器。无论出于何种原因,我都会因此得到一个 NaN。

食谱.js

    /* Count apperance of every tag */
    let tagCounter = [];
    allRecipes.forEach(recipe => {
        const tag = recipe.tag;

        // Suche nach dem Tag in tagCounter
        const existingTag = tagCounter.find(item => JSON.stringify(item.tag) === JSON.stringify(tag));
        if (existingTag) {
        // Das Tag wurde gefunden, erhöhe den Counter
        existingTag.tag.counter += 1;
        console.log(existingTag.tag.counter);

        } else {
        // Das Tag wurde nicht gefunden, füge es zu tagCounter hinzu
        tagCounter.push({ tag, counter: 1 });
        console.log("else");
        console.log(existingTag?.tag?.counter);

        }
    });
    
    console.log(tagCounter);
  
    res.status(200).json({resultArrayUniqueTags, tagCounter})

安慰:

else
undefined
else
undefined
NaN
NaN
NaN
NaN
[ { tag: Breakfast, counter: 1 }, { tag: Lunch, counter: 1 } ]

我真的不明白为什么我不能增加计数器。使用控制台.log(typeof)验证数据类型时,它显示“数字”。

JavaScript HTML 节点 .js 数组 对象

评论


答:

1赞 Marko 10/15/2023 #1

你应该做而不是existingTag.counter += 1;existingTag.tag.counter += 1;

此外,而不是console.log(existingTag.counter);console.log(existingTag.tag.counter);