如何使用单引号括起来的每个字符串创建字符串数组(javascript)

时间:2017-01-15 07:17:12

标签: javascript angularjs angularjs-orderby

我有一个对象,我正在迭代它的键并将其所有键都推入一个数组中,我需要用单引号括起每个字符串,所以例如如果我有一个对象{"name": true, "Updated Date": false}我想要创建字符串数组作为['“name”','“Updated Date”'],需要这种格式的原因是使角度orderBy过滤器使用多个谓词,每个谓词之间有空格,如更新日期< /强>

我曾尝试过以下代码

var myObj = {"name": true, "Updated Date": false}

var myPredicates = [];

for(var prop in myObj) {
    myPredicates.push("'" + prop + "'");
}

console.log(myPredicates);

这样做的结果将是["'name'", "'Updated Date'"],但我想要实现的是['"name"', '"Updated Date"']

这是plunker我想从predicate

filterObject {{1}}

4 个答案:

答案 0 :(得分:1)

你在这里问的问题 - 其他答案是根据表面价值得出的,并给出了合理的答案 - 根据你实际使用的AngularJS代码你要提出的问题 plunkr。最重要的是,您对JavaScript有一些误解会导致您进一步混淆:

  1. 双引号内是否有单引号或 单引号中的双引号无关紧要
  2. 当您在浏览器中将字符串打印到控制台时,总是使用double 引号(只需输入'abc' 返回"abc" 直接在控制台中返回以查看此内容。)
  3. 关于你的实际问题:而不是......

    predicate=['"+name"','"-Updated Date"']
    

    AngularJS需要的是......

    predicate=['+"name"','-"Updated Date"']
    

    请注意,加号和减号的位置已更改。 (正如您可能知道的那样,name周围实际上并不需要引号,因为它没有嵌入空格,但是将它们放在那里并没有什么坏处,就像您的代码一样。)

    因此,您的plunkr代码,而不是:

    predicate.push("'-" + key + "'");
    

    应该使用:

    predicate.push("-'" + key + "'");
    

答案 1 :(得分:0)

只需添加转义的引号。

[]

答案 2 :(得分:0)

试试这个:(注意我只打印一个元素,因为console.log(keys)似乎将数组中的字符串格式化为不同的颜色。

var myObj = {"name": true, "Updated Date": false}

var keys = Object.keys(myObj);

for(var i = 0; i < keys.length; i++) {
    keys[i] = "'\"" + keys[i] + "\"'";
}

console.log(keys[0]);

答案 3 :(得分:0)

为什么不用单引号&#39;

反转双引号&#34;
    var myObj = {"name": true, "Updated Date": false}

    var myPredicates = [];

    for(var prop in myObj) {
        myPredicates.push('"' + prop + '"');
    }


    for (var i=0; i<myPredicates.length; i++){
        console.log (myPredicates[i])
    }

//"name"
//"Updated Date"