出于某种原因,我有一个这样的字符串:
"id: 123, title: something, category: science, ... "
要制作包含键值对的javascript对象,我编写了以下方法:
function stringToMap(stringToCut){
var map = {};
var listOfPairs = stringToCut.split(",");
for(var i = 0; i < listOfPairs.length; i++){
var pair = listOfPairs[i].split(":");
map[pair[0]] = pair[1];
}
return map;
}
使用点访问它很重要,而不是使用[]括号。 在chrome调试模式下,我看到了预期的对象,但是当我想访问它的一个元素时,如:
console.log(obj.title);
我得到了未定义......
我做错了什么?
答案 0 :(得分:4)
这是因为你的密钥名称中有一个空格:
console.log(obj[" title"]); // "something"
要解决此问题,请将您的第一次拆分更改为", "
上的拆分,而不仅仅是","
:
var listOfPairs = stringToCut.split(", ");
作为进一步的修复,您还需要将第二个拆分更改为": "
而不仅仅是":"
,否则您的所有值都将以空格开头。
var pair = listOfPairs[i].split(": ");