第一种方式
/**
* 根据对象的某个属性值进行数组去重
* @param {Array} arr - 包含对象的数组
* @param {string} prop - 属性名,根据该属性值进行去重
* @returns {Array} - 去重后的数组
* @example
* const people = [
* { id: 1, name: 'Alice' },
* { id: 2, name: 'Bob' },
* { id: 1, name: 'Alice' }, // 重复项
* { id: 3, name: 'Charlie' }
* ];
* const uniquePeople = uniqueArrayByProp(people, 'id');
* console.log(uniquePeople);
* // 输出:
* // [
* // { id: 1, name: 'Alice' },
* // { id: 2, name: 'Bob' },
* // { id: 3, name: 'Charlie' }
* // ]
*/
function uniqueArrayByProp(arr, prop) {
const seen = new Set();
return arr.filter(item => {
const value = item[prop];
if (!seen.has(value)) {
seen.add(value);
return true;
}
return false;
});
}