写出以下代码的最简洁最神秘的方法是什么?此代码在继续之前检查字符是否存在。
if(window.location.href.toString().indexOf('A') > 1) {
if(window.location.href.toString().indexOf('hh') > 1) {
if(window.location.href.toString().indexOf('eg3') > 1) {
if(window.location.href.toString().indexOf('1g4') > 1) {
}
}
}
}
答案 0 :(得分:1)
这个或多或少的神秘线条怎么样?
function check (a,b) {for (var i=0,k,f=1;k=b[i];i++) {f^=!!~a.indexOf(k)};return !f;}
如果您愿意,可以Closure compiled version
function check(d,e){for(var b=0,c,a=1;c=e[b];b++)a^=!!~d.indexOf(c);return!a};
输出
var x = "asdf";
console.log("found: %s", check (x,["qwer","rtz"])) //found: false
console.log("found: %s", check (x,["qwer","a"])) //found: true
这将检查包含a
b
在你的情况下
check (window.location.href,["A","hh","eg3","1g4"])?/*Code to execute when true*/:/*When false*/
或(function (a,b) {for (var i=0,k,f=1;k=b[i];i++) {f^=!!~a.indexOf(k)};return !f;})(window.location.href,["A","hh","eg3","1g4"])?alert("found"):alert("not found")
答案 1 :(得分:0)
如果您的浏览器支持forEach()
方法,您可以用这种神秘的方式编写
var str = location.href,
existAllSubstring = 1;
["A", "hh", "eg3", "ig4"].forEach(function(s) {
existAllSubstring *= +(str.indexOf(s) > 1);
});
if (existAllSubstring > 0) {
/* ok */
}