首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JS对象值以'undefined‘开头

JS对象值以'undefined‘开头
EN

Stack Overflow用户
提问于 2013-04-02 02:01:49
回答 3查看 166关注 0票数 0

我正在尝试使用一个数组作为键值类型的场景,它使用了一个例外,即每个值都以'undefined‘开头。我相信这是由于最初的赋值是一个+=运算符,但是我不确定如何解决它。

这是剥离了大量字符串连接的代码...

代码语言:javascript
复制
   var phasehtml = {};
        $.each(json, function (i, item) {
            phasehtml[item.Phase] += 'item:'+item.ID;
        });

基本上,我尝试将字符串附加到适当的键上……

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-04-02 02:04:29

您可以将代码更改为仅在已有ID的情况下附加ID:

代码语言:javascript
复制
var phasehtml = {};
$.each(json, function (i, item) {
   // Use the existing value for the phase, or an empty string that we can append to
   var existingValue = (phasehtml.hasOwnProperty(item.Phase) ? phasehtml[item.Phase] : "");
   phasehtml[item.Phase] = existingValue + 'item:' + item.ID; 
});

假设您希望phasehtml包含每个阶段的"item:1item:2“形式的附加列表。

票数 3
EN

Stack Overflow用户

发布于 2013-04-02 02:16:07

您发布的数组为空。

var phasehtml = {};

似乎这就是下面的语句phasehtmlitem.Phase被评估为“未定义”的原因。

票数 0
EN

Stack Overflow用户

发布于 2013-04-02 02:19:27

嗯,

有问题了。

在您代码中,您试图添加以前未定义的值,这就是出现此错误的原因。

在您的代码中,您尚未初始化要添加的变量。

所以试试这个:

代码语言:javascript
复制
  var phasehtml = {};
    $.each(json, function (i, item) {
        phasehtml[item.Phase] = "";
        phasehtml[item.Phase] += 'item:'+item.ID;
    });

在这个示例中,首先指定一些值,此处为空,然后使用数组索引。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15748823

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档