我有这个对象数组
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
的数组中的第一个单元格
如果它们存在于更高的单元格编号中,如何消除较低索引号的数组项 意味着数组中最后添加的项目将是要保存的项目?
答案 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
的实例。
可能有更好的方法来清理你的阵列,但是几乎可以肯定的是,你可以做更好的方法来做你想做的事情,而不必在一开始就清理阵列。