键值对在javascript中未定义

时间:2013-11-27 09:37:16

标签: javascript undefined key-value

出于某种原因,我有一个这样的字符串:

"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);

我得到了未定义......

我做错了什么?

1 个答案:

答案 0 :(得分:4)

这是因为你的密钥名称中有一个空格:

console.log(obj[" title"]); // "something"

要解决此问题,请将您的第一次拆分更改为", "上的拆分,而不仅仅是","

var listOfPairs = stringToCut.split(", ");

JSFiddle demo

作为进一步的修复,您还需要将第二个拆分更改为": "而不仅仅是":",否则您的所有值都将以空格开头。

var pair = listOfPairs[i].split(": ");