javascript中未定义键值对

key-value pair undefined in javascript

本文关键字:键值对 未定义 javascript      更新时间:2023-11-13

由于某种原因,我有一个字符串如下:

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

我没有定义。。。

我做错了什么?

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

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

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

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

JSFiddle演示

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

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