这个三元运算符有什么问题?

jar*_*ada 5 javascript ternary

我有一个对象menuNames,应该维护一个菜单项列表.如果menuNames已经有slug,则递增该值,如果它不包含slug,则将值设置为等于1.我这样做是为了跟踪唯一的名字.我想最终得到类似的东西:

menuNames: {
    home: 1,
    products: 10,
    contact: 1
}
Run Code Online (Sandbox Code Playgroud)

这不起作用(这将包含在通过每个slug的循环中):

menuNames[slug] = (menuNames.hasOwnProperty(slug) ? menuNames[slug]++ : 1);
//this sets every value to 1
Run Code Online (Sandbox Code Playgroud)

但这确实有效(这将包含在每个slug的循环中):

if(menuNames.hasOwnProperty(slug)) {
    menuNames[slug]++;
} else {
    menuNames[slug] = 1;
}
Run Code Online (Sandbox Code Playgroud)

Roc*_*mat 8

menuNames[slug]++递增值,但返回原始值.

您正在这样做menuNames[slug] =,因此在递增后将值设置回原始值.

要修复它,只需执行以下操作:

menuNames[slug] = (menuNames.hasOwnProperty(slug) ? menuNames[slug]+1 : 1);
Run Code Online (Sandbox Code Playgroud)

要么:

(menuNames.hasOwnProperty(slug) ? menuNames[slug]++ : menuNames[slug] = 1);
Run Code Online (Sandbox Code Playgroud)