创建一个动态填充的对象

时间:2015-05-16 12:05:05

标签: javascript

我的JavaScript看起来像这样:

var deletedRows = [];

function DeleteRow(el) {
    deletedRows.push({
        entityid: el.parent().attr('entityid'),
        itemid: el.attr('itemid')
    });
}

如何简化此集合,以便不会出现重复的entityid。所以密钥必须是entityid,并且值必须是itemid的列表。 IE浏览器。 “如果此entityid已存在,请将itemid添加到其中”

我曾经想过用值作为itemid的分隔列表来做一个关联数组,但我真的想找到一种更简洁的方法来做到这一点。任何想法都非常感激

2 个答案:

答案 0 :(得分:1)

我不确定我明白你的意思。如果我这样做,使用此方法,您将获得一个包含每个entityid的每个itemID的数组。

var deletedRows = {};

function DeleteRow(el) {
  var ID = el.parent().attr('entityid');
  var itemID = el.attr('itemid');

  if(deletedRow[ID] === undefined)
    deleteRow[ID] = [];
  deletedRows.push(itemID);
}

结果就像:

deletedRows = 
{ 
    "ID1" = ["itemID1", "itemID2"],
    "ID2" = ["itemID3"]
};

答案 1 :(得分:0)

使用数组:

var deletedRows = [];

function DeleteRow(el) {
    var entityid = el.parent().attr('entityid');
    var itemid = el.attr('itemid');
    for (var i=0; i<deletedRows.length; ++i) {
        if (deletedRows[i].entityid == entityid) {
            if (deletedRows[i].itemid instanceof Array) {
                deletedRows[i].itemid.push(itemid);
            } else {
                var olditem = deletedRows[i].itemid;
                deletedRows[i] = [olditem, itemid];
            }
            return;
        }
    }
    deletedRows.push({
        entityid: entityid,
        itemid: itemid
    });
}