我有一个对象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/