我有一个函数接受一串逗号分隔的项目,例如“a,b,c,d”。
我需要将其转换为:“a”|| “b”|| “c”|| “d” 请注意,逗号分隔字符串中的项目数可以是动态的,因此可以有1个,2个,20个等等。
以下是我尝试的示例:
function sample (params) {
var comp = "",
i,
paramsArr = params.split(","),
status;
for (i = 0; i < paramsArr.length; i++) {
comp += paramsArr[i] + ' ||';
}
comp = comp.substring(0, comp.length - 3);
status = comp ? "AVAILABLE" : "UNAVAILABLE";
return status;
}
我遇到的问题是在for循环中,当我通过数组中的项目并添加OR运算符时,它显然最终会出现在1个字符串中,例如“a || b || c || d “它总是评估为真。
有人可以告诉我如何在IF语句中将comp的值设置为“a”||格式“b”|| “C” ?
P.S我是javascript的新手,所以如果不是这样的话,我很高兴你能告诉我如何能达到我所需要的。
答案 0 :(得分:1)
您需要在参数上使用eval:
function sample (params) {
var paramsArr = params.split(",");
for (i = 0; i < paramsArr.length; i++) {
if (eval(paramsArr[i])){
return "AVAILABLE";
}
}
return "UNAVAILABLE";
}
a=true;
b=false;
c=false;
> sample("a,b,c")
< AVAILABLE = $1
> a=false
< false = $2
> sample("a,b,c")
< UNAVAILABLE = $2
答案 1 :(得分:1)
亚历山大的部分答案。
"a, b, c, d".split(',').map(function(value){
return '"' + value.trim() + '"';
}).join(' || ')
输出&#34; a&#34; || &#34; B&#34; || &#34; C&#34; || &#34; d&#34;
答案 2 :(得分:0)
这是另一种可能的解决方案:
var str = "a, b, c, d";
var res = str.split(',').map(function(x) {
return '"' + x.replace(/ /g, '') + '"'
}).join('||');
console.log(res)