从字符串/字符串替代中删除引号

时间:2014-03-04 07:33:57

标签: javascript jquery regex string escaping

我有dropDown元素,它采用格式

的选项
     ctrlOptions:{0:'String',1:'int'}

除了简单的数据类型,我有用户定义的数据类型,因此我想填充这个动态。所以我使用循环和连接

    var dropDown = "{"
for(var i=0;i<dataTypesList.length;i++){
 if(i == dataTypesList.length-1){
  dropDown = dropDown + i + ":" + "'" + dataTypesList[i].Name + "'}";
 }else{
  dropDown = dropDown + i + ":" + "'" +  dataTypesList[i].Name+ "'" + ",";
 }}

这产生了所需格式的选项,但是附带引号,如

ctrlOptions:“{0:'String',1:'int'}”

我想删除我试过的双引号替换它似乎没有帮助。我怎样才能实现这一点,我可以用其他任何方式。

2 个答案:

答案 0 :(得分:1)

你想要创造的是一个对象&amp;不是一个字符串。

从您的代码中疯狂猜测,输入 dataTypesList 看起来像这样:

dataTypesList = [{Name:'String'}, {Name:'int'}]

您应该使用:

var dropDown = {};

for(var i=0;i<dataTypesList.length;i++)

  dropDown[i] = dataTypesList[i].Name;

然后输出是一个对象:

 {0: "String", 1: "int"}

答案 1 :(得分:0)

您可以使用JSON.parse将选项字符串从字符串json转换为对象json:

使用您的代码(稍加修改):

var dropDown = "{"
for(var i = 0; i < dataTypesList.length; i++)
{
 if(i === dataTypesList.length - 1)
 {
  dropDown += i + ":'" + dataTypesList[i].Name + "'}";
 }
  else
 {
  dropDown += i + ":'" +  dataTypesList[i].Name + "',";
 }
}


// later...
ctrlOptions: JSON.parse(dropDown);

验证目标浏览器是否兼容:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse

如果没有,有些库与旧浏览器兼容,可以做同样的事情。作者推荐JSON2用于过时的浏览器:https://github.com/douglascrockford/JSON-js