0

我正在尝试将数组用作键值类型场景,并且它正在处理每个值都以“未定义”开头的例外情况。我相信这是由于初始分配是 += 运算符,但我不知道如何解决它。

这是去掉了很多字符串连接的代码......

   var phasehtml = {};
        $.each(json, function (i, item) {
            phasehtml[item.Phase] += 'item:'+item.ID;
        });

基本上我正在尝试将字符串附加到适当的键....

4

3 回答 3

3

如果已经有 ID,您可以将代码更改为仅附加 ID:

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”形式的附加列表。

于 2013-04-01T18:04:28.577 回答
0

您发布的数组是空的。

var phasehtml = {};

这似乎是以下语句 phasehtml[item.Phase] 被评估为“未定义”的原因。

于 2013-04-01T18:16:06.707 回答
0

嗯,

有问题。

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

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

所以试试这个:

  var phasehtml = {};
    $.each(json, function (i, item) {
        phasehtml[item.Phase] = "";
        phasehtml[item.Phase] += 'item:'+item.ID;
    });

在这首先分配一些值,这里是空白,然后使用数组的索引。

于 2013-04-01T18:19:26.553 回答