排序对象数组以消除重复的条目

时间:2013-01-11 19:55:10

标签: javascript asp.net arrays javascript-objects arrayobject

我有这个对象数组

var ArrTdsObjects = [];

function TdMaster(id, HeaderTxt, CurrentIndex, SortOrder, Width, Color, BgColor) {
    this.id = id;
    this.HeaderTxt = HeaderTxt;
    this.CurrentIndex = CurrentIndex;
    this.SortOrder = SortOrder;
    this.Width = Width;
    this.Color = Color;
    this.BgColor = BgColor;
}
        ArrTdsObjects.push(new TdMaster(
                        CurTdID,
                        CurTdInnerTxt,
                        CurTdCellindex,
                        CurTdSortOrder,
                        CurTdWidth,
                        "color", "bgColor"
                                        )
                            );

将一些对象条目添加到数组

之后

我想根据ArrTdsObjects

消除curTdID中存储的重复对象

含义:如果较高的单元格编号具有Id

,则会忽略具有相同id的数组中的第一个单元格

如果它们存在于更高的单元格编号中,如何消除较低索引号的数组项 意味着数组中最后添加的项目将是要保存的项目?

1 个答案:

答案 0 :(得分:1)

遍历数组从0到array.length并将对象添加到" hash" (阅读:javascript多态对象)。观察:

var objects = [...];
var ids = {};
for (var i = 0; i < objects.length; ++i) { ids[objects[i].id] = objects[i]; }
// Now empty the list and push the non-duplicated objects back into it
objects = [];
// Check hasOwnProperty in case prototypes have been changed
for (var id in ids) { if (ids.hasOwnProperty(id)) { objects.push(ids[id]); } }

ids每个id只能包含一个对象,因此只有id的最后一个对象才会保留在ids中。因此,在此操作之后,您可以保证在数组中只有id的实例。

可能有更好的方法来清理你的阵列,但是几乎可以肯定的是,你可以做更好的方法来做你想做的事情,而不必在一开始就清理阵列。