我有一个对象,我正在迭代它的键并将其所有键都推入一个数组中,我需要用单引号括起每个字符串,所以例如如果我有一个对象{"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}}
答案 0 :(得分:1)
你在这里问的问题 - 其他答案是根据表面价值得出的,并给出了合理的答案 - 根据你实际使用的AngularJS代码不你要提出的问题 plunkr。最重要的是,您对JavaScript有一些误解会导致您进一步混淆:
'abc'
返回和"abc"
直接在控制台中返回以查看此内容。)关于你的实际问题:而不是......
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"