【发布时间】:2020-07-25 18:32:57
【问题描述】:
我在 jQuery 中有下面的数组,如下所示。
var originalArray=[
{ID: "01", PID: "1111", Week: "Week1"},
{ID: "02", PID: "2222", Week: "Week1"},
{ID: "03", PID: "3333", Week: "Week1"},
{ID: "04", PID: "4444", Week: "Week1"},
{ID: "05", PID: "1111", Week: "Week1"}, //Duplicate entry like ID 01
{ID: "06", PID: "1111", Week: "Week2"},
{ID: "07", PID: "2222", Week: "Week2"},
{ID: "08", PID: "3333", Week: "Week2"},
{ID: "09", PID: "4444", Week: "Week2"},
{ID: "10", PID: "1111", Week: "Week2"}, //Duplicate entry like ID 06
{ID: "11", PID: "1111", Week: "Week3"},
{ID: "12", PID: "2222", Week: "Week3"},
{ID: "13", PID: "3333", Week: "Week3"},
{ID: "14", PID: "4444", Week: "Week3"},
{ID: "15", PID: "2222", Week: "Week3"}, //Duplicate entry like ID 11
{ID: "16", PID: "1111", Week: "Week4"},
{ID: "17", PID: "2222", Week: "Week4"},
{ID: "18", PID: "3333", Week: "Week4"},
{ID: "19", PID: "4444", Week: "Week4"},
{ID: "20", PID: "4444", Week: "Week4"} //Duplicate entry like ID 19
];
现在,我想要的是所有具有仅属性“PID”和“周”组合的记录作为要删除的重复项。
为了进一步说明,应删除以下记录。
- ID为“05”的记录 --> PID“1111”和周“Week1”与ID“01”相同
- ID 为“10”的记录 --> PID“1111”和周“Week2”与 ID“06”相同
- ID 为“15”的记录 --> PID“2222”和周“Week3”与 ID“11”相同
- 记录 ID “20” --> PID “4444” & Week “Week4” 与 ID “19” 相同
这是我迄今为止尝试过的:
//Array declaration
var originalArray=[
{ID: "01", PID: "1111", Week: "Week1"},
{ID: "02", PID: "2222", Week: "Week1"},
{ID: "03", PID: "3333", Week: "Week1"},
{ID: "04", PID: "4444", Week: "Week1"},
{ID: "05", PID: "1111", Week: "Week1"}, //Duplicate entry like ID 01
{ID: "06", PID: "1111", Week: "Week2"},
{ID: "07", PID: "2222", Week: "Week2"},
{ID: "08", PID: "3333", Week: "Week2"},
{ID: "09", PID: "4444", Week: "Week2"},
{ID: "10", PID: "1111", Week: "Week2"}, //Duplicate entry like ID 06
{ID: "11", PID: "1111", Week: "Week3"},
{ID: "12", PID: "2222", Week: "Week3"},
{ID: "13", PID: "3333", Week: "Week3"},
{ID: "14", PID: "4444", Week: "Week3"},
{ID: "15", PID: "2222", Week: "Week3"}, //Duplicate entry like ID 11
{ID: "16", PID: "1111", Week: "Week4"},
{ID: "17", PID: "2222", Week: "Week4"},
{ID: "18", PID: "3333", Week: "Week4"},
{ID: "19", PID: "4444", Week: "Week4"},
{ID: "20", PID: "4444", Week: "Week4"} //Duplicate entry like ID 19
];
var result = [];
var tempArr = [];
$.each(originalArray, function (index, entry) {
if (!(tempArr[entry.PID] && tempArr[entry.Week])) {
tempArr[entry.PID] = true;
tempArr[entry.Week] = true;
result.push(entry);
}
});
console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
使用上面的代码,我认为它只检查第一个属性 PID,而不是第二个属性 Week。
我也尝试过以下参考,但几乎找不到任何帮助。
Duplicates in object array
How to remove duplicated OBJECTS from JavaScript array?
Remove duplicates from array of objects - Javascript
JavaScript Array Distinct()
提前致谢。
【问题讨论】:
标签: arrays object properties duplicates unique