I have below array in jQuery as below.
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
];
Now, what I want is all the records with combination of only properties "PID" & "Week" as duplicate to be removed.
To explain further, below records should be removed.
- Record with ID "05" --> PID "1111" & Week "Week1" is same as ID "01"
- Record with ID "10" --> PID "1111" & Week "Week2" is same as ID "06"
- Record with ID "15" --> PID "2222" & Week "Week3" is same as ID "11"
- Record with ID "20" --> PID "4444" & Week "Week4" is same as ID "19"
This is what I have tried so far:
//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>
With above tried code, I think it only checks first property PID, but not second property Week.
I have also tried below references, but could hardly find any help.
Duplicates in object array
How to remove duplicated OBJECTS from JavaScript array?
Remove duplicates from array of objects - Javascript
JavaScript Array Distinct()
Thanks in advance.