有没有更好的方法来';什么也不做';在javascript if语句中?
我的url看起来像这样=有没有更好的方法来';什么也不做';在javascript if语句中?,javascript,Javascript,我的url看起来像这样=https://studentscafe.com/menu/2 我正在检查它是否有两个不同的url参数 1.?晚餐=1 或 2.晚餐=1 如果有1,什么也不做 如果有#2,什么也不做 但如果两者都不存在,则默认为将?dinner=1添加到url 有没有更好的方法让默认值在if语句中不执行任何操作?比如说 var path = 'https://studentscafe.com/menu/2'; if (path.indexOf('?dinner=1') >= 1)
https://studentscafe.com/menu/2
我正在检查它是否有两个不同的url参数
1.?晚餐=1
或
2.晚餐=1
如果有1,什么也不做
如果有#2,什么也不做
但如果两者都不存在,则默认为将?dinner=1
添加到url
有没有更好的方法让默认值在if语句中不执行任何操作?比如说
var path = 'https://studentscafe.com/menu/2';
if (path.indexOf('?dinner=1') >= 1) {
console.log('has ?');
// do nothing leave url as it is
} else {
console.log('does not have ?');
if (path.indexOf('&dinner=1') >= 1) {
// do nothing leave url as it is
} else {
path = path + '?dinner=1';
}
}
预期输出:如果url没有#1或#2:https://studentscafe.com/menu/2?dinner=1
而不是
if (something) {
// do nothing
} else {
// do what you need
}
你可以用
if (!something) {
// do what you need
}
就你而言:
if (path.indexOf('?dinner=1') == -1 && path.indexOf('&dinner=1') == -1) {
path = path + '?dinner=1';
}
你可以这样做
var path = 'https://studentscafe.com/menu/2';
// Since there is no change to path if it contains either ?dinner=1 or &dinner=1
if (path.indexOf('dinner=1') >= 1) {
console.log('has dinner');
// do nothing leave url as it is
} else {
path = path + '?dinner=1';
}
使用a和代码>否定运算符,这可能非常简单:
var路径='1〕https://studentscafe.com/menu/2';
如果(!/[?&]晚餐=1/.test(路径)){
路径+='?晚餐=1';
}
console.log(路径)代码>在现代JS中,您只需
['?dinner=1','?dinner=2'].every(s => !path.includes(s)) && (path += '?dinner=1');
与其什么也不做,不如否定条件并丢失else
块:if(path.indexOf('?dinner=1')<1){…}
-如果在第一个位置(索引0)找到子字符串,indexOf
可以返回0
,因此,>=1
应该是=0
。如果这是对我的评论的回应,最好使用,我建议的=0
的否定将是<0
,这与