创建星号分隔字符串的JavaScript对象

我有三个字符串。

var ids = "1*2*3"; var Name ="John*Brain*Andy"; var Code ="A12*B32*C38"; 

我想创建它的JavaScript对象。

JSON对象只是一个字符串,因此它将是:

 var json = '{"ids":"'+ids+'","Name":"'+Name+'","Code":"'+Code+'"}'; 

如果要将字符串转换为字符串数组:

 var json = '{"ids":["'+ids.replace(/\*/g,'","')+'"],"Name":["'+Name.replace(/\*/g,'","')+'"],"Code":["'+Code.replace(/\*/g,'","')+'"]}'; 

如果你根本不是为了JSON,而是实际上是一个Javascript对象,它将是:

 var obj = { ids: ids.split('*'), Name: Name.split('*'), Code: Code.split('*') }; 

根据你的描述“我希望数组的第一项有三个道具,即Id,名称和代码,值分别为1,John,A12。” 然而,它会完全不同:

 var Ids = ids.split('*'), names = Name.split('*'), codes = Code.split('*'); var arr = []; for (var i = 0; i < Ids.length; i++) { arr.push({ Id: Ids[i], name: names[i], code: codes[i] }); } 

如果你想要它作为JSON,它将是:

 var Ids = ids.split('*'), names = Name.split('*'), codes = Code.split('*'); var items = []; for (var i = 0; i < Ids.length; i++) { items.push('{"Id":"'+Ids[i]+'","name":"'+names[i]+'","code":"'+codes[i]+'"}'); } json = '[' + items.join(',') + ']'; 

(注意:最后一个代码仅在字符串不包含任何引号时才能正常工作,否则在放入字符串时必须对它们进行转义。)

我发现Guffa给出了一个很好的答案。 我只想避免手动JSON序列化,因为Name属性可能有一个必须转义的特殊字符。 所以我建议对Guffa的建议进行最小的改动并使用JSON.stringify (参见http://www.json.org/js.html )

 var Ids = ids.split('*'), names = Name.split('*'), codes = Code.split('*'); var arr = []; for (var i = 0; i < Ids.length; i++) { arr.push({ Id: Ids[i], Name: names[i], Code: codes[i] }); } var result = JSON.stringify(arr);