【发布时间】:2019-06-25 06:09:24
【问题描述】:
我有一个这样的数组:
0: {ClusterId: "10.210.28.231", Device IP: "10.210.28.231", SlotID: "1"}
1: {ClusterId: "10.210.28.234", Device IP: "10.210.28.234", SlotID: "1"}
2: {ClusterId: "10.210.28.231", Device IP: "10.210.28.231", SlotID: "2"}
3: {ClusterId: "10.210.28.234", Device IP: "10.210.28.234", SlotID: "2"}
4: {ClusterId: "10.210.28.234", Device IP: "10.210.28.234", SlotID: "2"}
5: {ClusterId: "10.210.28.231", Device IP: "10.210.28.231", SlotID: "2"}
我正在尝试删除 ClusterId 和 SlotID 的重复项。下面是我的示例代码,其中我将重复值推送到一个数组 (duplicateArrayVal) 并且不重复到另一个数组 (importArrayVal)
UniqueArraybyObject($scope.excelRowArray, "SlotID", "ClusterId");
function UniqueArraybyObject(collection, slotId, clusterName) {
var importArrayVal = [],
slot = [],
clusters = [];
$scope.duplicateArrayVal = [];
angular.forEach(collection, function(item) {
var tempSlot = item[slotId];
var cluster = item[clusterName];
if ((slot.indexOf(tempSlot) === -1) || (clusters.indexOf(cluster) === -1)) {
slot.push(tempSlot);
clusters.push(cluster);
importArrayVal.push(item);
} else {
$scope.duplicateArrayVal.push(item);
}
});
return importArrayVal;
};
对我来说出现的问题是 3,4 和 5 行的项目没有显示,因为这些被认为是重复的。但只有第 4 行和第 5 行是重复的,而不是第 3 行。我需要第 3 行在非重复数组中。
请帮助我实现这一目标
【问题讨论】:
-
为什么第三个不会被认为是重复的?你在想什么逻辑?它清楚地看到第三个是第一个的重复
-
第一个使用 SlotID:1 而第三个使用 SlotID:2。我需要检查两个键
-
那么就会全部申请,然后就不会把2当成重复了
标签: javascript jquery angularjs