У меня есть массив под 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" и "Week" как дубликат, который будет удален. Для более подробного объяснения следующие записи должны быть удалены.
- Запись с идентификатором "05" -> PID "1111" и неделя "Week1" совпадает с идентификатором "01"
- Запись с идентификатором «10» -> PID «1111» и неделя «Week2» совпадает с идентификатором «06»
- Запись с идентификатором «15» -> PID «2222» и неделя «Week3» идентично идентификатору "11"
- Запись с идентификатором "20" -> PID "4444" и неделя "Week4" совпадает с идентификатором "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. Я также пробовал ссылки ниже, но вряд ли мог найти какую-либо помощь.
Дубликаты в массиве объектов Как удалить дубликаты ОБЪЕКТОВ из JavaScript массива? Удалить дубликаты из массива объектов - Javascript JavaScript Array Distinct ()
Заранее спасибо.