indexOf 函数中的选项之间的选择
Choice between options in indexOf function
我想在 javascript“indexOf”函数中的 if 结构中的不同选项之间进行选择。最好的解决方法是什么...
此示例不起作用:
if( str.indexOf( "twitter" || "facebook" || "youtube")!=-1 ){
//my code goes here
}
我们可以使用这些代码来工作
但这并不理想...
var str="my profile in facebook";
if (str.indexOf("twitter")!=-1 ||
str.indexOf("youtube")!=-1 || str.indexOf("facebook")!=-1){ //codes goes
here }
我建议为此使用一个函数。
function contains(str, substring) {
return str.indexOf(substring) > -1;
}
if(contains(str, "twitter") || contains(str, "facebook") || contains(str, "youtube")) {
// your code here
}
或者,如果你想让它在编程时更简洁,使用如下:
function containsAny(str) {
return Array.prototype.slice.call(arguments)
.slice(1)
.some(function(substring) {
return str.indexOf(substring) > -1
});
}
if(containsAny(str, "twitter", "facebook", "youtube")) {
// your code here
}
编辑:关于你的问题for less code, with ES6, you can do:
const containsAny = (str, ...args) => [...args].slice(1).some(s => str.indexOf(s) > -1)
这样试试...
var media = ["twitter", "facebook", "youtube"];
if(media.includes(str) {
//your code
}
如果我正确理解了您要查找的内容,解决方案可以是:
if( str.indexOf( "twitter")!=-1 || str.indexOf( "facebook")!=-1 || str.indexOf( "youtube")!=-1 ){
//my code goes here
}
我想在 javascript“indexOf”函数中的 if 结构中的不同选项之间进行选择。最好的解决方法是什么... 此示例不起作用:
if( str.indexOf( "twitter" || "facebook" || "youtube")!=-1 ){
//my code goes here
}
我们可以使用这些代码来工作 但这并不理想...
var str="my profile in facebook"; if (str.indexOf("twitter")!=-1 || str.indexOf("youtube")!=-1 || str.indexOf("facebook")!=-1){ //codes goes here }
我建议为此使用一个函数。
function contains(str, substring) {
return str.indexOf(substring) > -1;
}
if(contains(str, "twitter") || contains(str, "facebook") || contains(str, "youtube")) {
// your code here
}
或者,如果你想让它在编程时更简洁,使用如下:
function containsAny(str) {
return Array.prototype.slice.call(arguments)
.slice(1)
.some(function(substring) {
return str.indexOf(substring) > -1
});
}
if(containsAny(str, "twitter", "facebook", "youtube")) {
// your code here
}
编辑:关于你的问题for less code, with ES6, you can do:
const containsAny = (str, ...args) => [...args].slice(1).some(s => str.indexOf(s) > -1)
这样试试...
var media = ["twitter", "facebook", "youtube"];
if(media.includes(str) {
//your code
}
如果我正确理解了您要查找的内容,解决方案可以是:
if( str.indexOf( "twitter")!=-1 || str.indexOf( "facebook")!=-1 || str.indexOf( "youtube")!=-1 ){ //my code goes here }