我有一个字符串
{ city : Chicago , country : us , name : Somebody , plan : quarter90wtrial },{ city : New York , country : us , name : Somebody , plan : quarter90wtrial },{ city : Portland , country : us , name : Somebody , plan : quarter90wtrial },{ city :null, country :null, name : Somebody , plan : quarter90wtrial },{ city : Mexico City , country : mx , name : Aaron , plan : quarter90wtrial },{ city : Boston , country : us , name : Somebody , plan : quarter90wtrial },{ city : Los Angeles , country : us , name : Somebody , plan : quarter90wtrial },{ city : London , country : gb , name : Aaron , plan : quarter90wtrial },{ city : Los Angeles , country : us , name : Aaron , plan : quarter90wtrial },{ city : Chicago , country : us , name : Aaron , plan : quarter90wtrial }
我要做的是将此字符串转换为一个对象,我可以迭代并打印出每个字符串的城市,国家/地区和名称。到目前为止,我已经想出如何分割字符串以单独打印出每一行。
str = str.split('},{');
for(var i =0; i < str.length; i++)
{
alert(str[i]);
}
我无法弄清楚如何将字符串转换为可以打印城市,国家,名称等的对象。
答案 0 :(得分:2)
你有正确的初步想法。
但是,在拆分方法之后,您仍然需要像这样映射每对key:value
:
var str = '{ city : Chicago , country : us , name : Somebody , plan : quarter90wtrial },{ city : New York , country : us , name : Somebody , plan : quarter90wtrial },{ city : Portland , country : us , name : Somebody , plan : quarter90wtrial },{ city :null, country :null, name : Somebody , plan : quarter90wtrial },{ city : Mexico City , country : mx , name : Aaron , plan : quarter90wtrial },{ city : Boston , country : us , name : Somebody , plan : quarter90wtrial },{ city : Los Angeles , country : us , name : Somebody , plan : quarter90wtrial },{ city : London , country : gb , name : Aaron , plan : quarter90wtrial },{ city : Los Angeles , country : us , name : Aaron , plan : quarter90wtrial },{ city : Chicago , country : us , name : Aaron , plan : quarter90wtrial }';
var result = str.split('},{').map(function(itemStr) {
var itemObj = {};
// here we map each "key:value" pair
itemStr.replace(/.*?(\w+) *: *(.*?) *[,}]/g, function(match, key, val) {
itemObj[key] = val;
});
return itemObj;
});
console.log(result)
您可以在此处查看正则表达式的工作方式:https://regex101.com/r/E5tg26/1
希望它有所帮助。