我有一个对象menuNames,该对象应维护菜单项列表。如果menuNames已经具有slug,则增加该值;如果它不包含slug,则将该值设置为1。我这样做是为了跟踪唯一的名称。我想结束的事情是这样的:

menuNames: {
    home: 1,
    products: 10,
    contact: 1
}

这不起作用(这将包含在遍历每个子段的循环中):
menuNames[slug] = (menuNames.hasOwnProperty(slug) ? menuNames[slug]++ : 1);
//this sets every value to 1

但这确实有效(这将包含在遍历每个子段的循环中):
if(menuNames.hasOwnProperty(slug)) {
    menuNames[slug]++;
} else {
    menuNames[slug] = 1;
}

最佳答案

menuNames[slug]++增加值,但也返回原始值。

您正在执行menuNames[slug] =,因此在增加值后将其设置回原始值。

要解决此问题,只需执行以下操作:

menuNames[slug] = (menuNames.hasOwnProperty(slug) ? menuNames[slug]+1 : 1);

或者:
(menuNames.hasOwnProperty(slug) ? menuNames[slug]++ : menuNames[slug] = 1);

关于javascript - 这个三元运算符怎么了?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14777380/

10-11 13:46