【问题标题】:don't get return associative array in javascript不要在javascript中返回关联数组
【发布时间】:2012-08-06 14:16:22
【问题描述】:

当我在 javascript 中创建关联数组时,我遇到了这样的问题。 我想通过使用字段名作为键来获取值,但我只是没有定义。 我应该怎么做才能通过键获得价值或哪种方式是好的方法。

这是我的代码

function getFields(pVal){
    var tmpObj = {};
    str = pVal.split(",");
    for(i=0;i<str.length;i++){
        tmpVal = str[i].split(":");
        tmpObj[tmpVal[0]] = tmpVal[1];  
    }
    return tmpObj;
}

function JustTest(){
   var fields = {}; 
   fields = getFields("'Code':'PRJ001','Name':'Project 01'");
   alert(fields['Code']);
}

【问题讨论】:

  • 这个字符串来自哪里?它看起来应该是 JSON。

标签: javascript arrays associative-array key-value


【解决方案1】:

因为key是'Code',不是Code,注意单引号',你需要做alert(fields["'Code'"]);

PS:请在语句末尾添加;,省略它们是不好的做法。

【讨论】:

  • 带前缀的分号是分​​号,所以不是可选的。
  • 当我使用单个代码创建静态对象时。我可以检索价值。在动态中,我无法获得价值。我可以知道其中的区别吗?
【解决方案2】:

我已经重构了代码,试试这个:

function getFields(pVal) {
    var tmpObj = {};
    var str = pVal.split(",");
    for (var i = 0; i < str.length; i++) {
        var tmpVal = str[i].split(":");
        tmpObj[tmpVal[0]] = tmpVal[1];
    }
    return tmpObj;
}

function JustTest() {
    var fields = { };
    fields = getFields("'Code':'PRJ001','Name':'Project 01'");
    alert(fields["'Code'"]);
}

如果您有任何问题,请在下方评论代码,谢谢

【讨论】:

  • 我从参数中删除了单引号。因为我可以使用 2 种方式 [fields['Code'] 和 fields.Code]
猜你喜欢
  • 1970-01-01
  • 2013-03-08
  • 2013-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多