JS中字符串的格式输出

时间:2015-11-10 14:39:49

标签: javascript arrays comparator

我有一个函数接受一串逗号分隔的项目,例如“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的新手,所以如果不是这样的话,我很高兴你能告诉我如何能达到我所需要的。

3 个答案:

答案 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;

DEMO

答案 2 :(得分:0)

这是另一种可能的解决方案:

var str = "a, b, c, d";

var res = str.split(',').map(function(x) {
  return '"' + x.replace(/ /g, '') + '"'
}).join('||');

console.log(res)