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

如何创建字符串数组,每个字符串用单引号括起来(javascript),javascript,angularjs,angularjs-orderby,Javascript,Angularjs,Angularjs Orderby,我有一个对象,我正在遍历它的键,并将它的所有键放入一个数组中,我需要用单引号括住每个字符串,因此,例如,如果我有一个对象{“name”:true,“Updated Date”:false}我想创建字符串数组为[''name',''Updated Date'],需要这种格式的原因是为了使angular orderBy filter与多个谓词一起工作,每个谓词之间都有空格,如更新日期 我尝试了以下代码 var myObj={“name”:true,“Updated Date”:false} var

我有一个对象,我正在遍历它的键,并将它的所有键放入一个数组中,我需要用单引号括住每个字符串,因此,例如,如果我有一个对象
{“name”:true,“Updated Date”:false}
我想创建字符串数组为[''name',''Updated Date'],需要这种格式的原因是为了使angular orderBy filter与多个谓词一起工作,每个谓词之间都有空格,如更新日期

我尝试了以下代码

var myObj={“name”:true,“Updated Date”:false}
var myPredicates=[];
for(myObj中的var prop){
push(““+prop+”);
}

log(myPredicates)只需添加转义引号

var myObj={“name”:true,“Updated Date”:false}
var myPredicates=[];
for(myObj中的var prop){
push(“\”+prop+“\”);
}
log(myPredicates[0]);
log(myPredicates[1])试试这个:(注意,我只打印一个元素,因为console.log(key)似乎将数组中的字符串格式化为不同的格式

var myObj={“name”:true,“Updated Date”:false}
var keys=Object.keys(myObj);
对于(变量i=0;iconsole.log(键[0])
你在这里问的问题——其他答案都是表面上看的,并且给出了合理的答案——是而不是你想问的问题,基于你的plunkr中实际的AngularJS代码。除此之外,你对JavaScript有一些误解,这会让你更加困惑:

  • 是否在双引号内有单引号或 单引号中的双引号并不重要
  • 在浏览器中将字符串打印到控制台时,它始终使用双精度 引号(请尝试同时键入
    'abc'
    return和
    “abc”
    直接返回控制台查看)
  • 至于你的实际问题:不是这个

    predicate=['"+name"','"-Updated Date"']
    
    AngularJS需要的是

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

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

    predicate.push("'-" + key + "'");
    
    应使用:

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

    为什么不将双引号“
    与单引号“

        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"
    
    var myObj={“name”:true,“Updated Date”:false}
    var myPredicates=[];
    for(myObj中的var prop){
    push(““+prop+”);
    }
    
    对于(var i=0;ii,如果它只是一个对象,我认为object.keys(myObj)会给你你想要的。@PatrickEvans是myObj一个数组…嗯。这将在我的字符串
    [“name”,“Updated Date”“]”中添加另一对“
    ,并且有必要在
    “Updated Date”
    中加上一个引号,如
    “Updated Date”“
    它被称为转义字符,在本例中为引号。抱歉,伙计,但我仍然不理解您提供的链接与此问题的关系,我提供了一个plunker,如果我们尝试使用我创建的解决方案或您建议的解决方案或Jhon,non将起作用,例如,您的解决方案的原因是我的数据cal中没有属性led
    “name”“
    因此排序将无法按预期工作,角度过滤器接受属性名称数组
    [“name”,“city”]
    ,它将根据这两个属性对数据库进行排序,现在我们需要用单引号括起字符串的原因是此类属性的
    Updated
    date
    之间的空格。。。。。[继续前面的注释]中间有空格,它们需要用一对单引号括起来。现在,您的解决方案将创建一个字符串,如
    “Updated Date”“
    ,我们的数据中没有此类属性,我的解决方案将创建
    “Updated Date”
    而且数据中没有“更新日期”
    ,所以排序不起作用,很抱歉解释得太久,我只是想让您了解我到底面临什么问题,我想我需要联系angular团队或编写我自己的排序功能。您如何处理此处生成的数组并尝试在angu上设置排序lar页面?它不会有帮助,因为数组中的版本看起来像
    [“'name'”,“'Updated Date'”]
    如果我们在我提供的用于排序数据的plunker上尝试,排序结果不正确,因为结果不是预期的结果。这是我的误解,我认为所有答案都是正确的。我昨天注意到了我的错误,甚至我回答了我自己关于angular
    orderBy
    的问题,正如你所说的<代码>+
    -
    符号放置错误,但没有引用位置