编写一个函数,接受一个包含重复元素的数组,返回一个去重后的新数组。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>RemoveDuplicates</title>
</head>
<body>
<script>
/**
* 数组去重:编写一个函数,接受一个包含重复元素的数组,返回一个去重后的新数组。
* const numbers = [1, 2, 2, 3, 4, 4, 5];
* const uniqueNumbers = removeDuplicates(numbers);
* 期望 uniqueNumbers 为 [1, 2, 3, 4, 5]
*/
// 数字去重-方式一
function removeDuplicates1(array) {
return Array.from(new Set(array))
}
const numbers1 = [1, 2, 2, 3, 4, 4, 5];
const uniqueNumbers1 = removeDuplicates1(numbers1);
console.log(uniqueNumbers1); // [1, 2, 3, 4, 5]
// 数字去重-方式二
function removeDuplicates2(array) {
let result = []
for (const item of array) {
result.includes(item) || result.push(item)
}
return result;
}
const numbers2 = [1, 2, 2, 3, 4, 4, 5];
const uniqueNumbers2 = removeDuplicates2(numbers2);
console.log(uniqueNumbers2); // [1, 2, 3, 4, 5]
// 数组对象关键字去重
function removeDuplicates3(array, keyword) {
let result = []
for (const item of array) {
keyword ? result.some(ite => ite[keyword] == item[keyword]) || result.push(item) : result.push(item)
}
return result;
}
const objs = [{
id: 1,
name: "小明",
age: 12,
sex: "男"
}, {
id: 2,
name: "小红",
age: 15,
sex: "女"
}, {
id: 3,
name: "小亮",
age: 12,
sex: "男"
}, {
id: 4,
name: "小明",
age: 17,
sex: "男"
}];
const uniqueObjs = removeDuplicates3(objs, 'name');
console.log(uniqueObjs);
/*
{id: 1, name: '小明', age: 12, sex: '男'}
{id: 2, name: '小红', age: 15, sex: '女'}
{id: 3, name: '小亮', age: 12, sex: '男'}
*/
// 数组对象关键字符合去重
function removeDuplicates(array, keywordArr = []) {
let result = []
for (const item of array) {
if (keywordArr.length == 0) {
result.push(item)
} else if (keywordArr.length == 1) {
result.some(ite => ite[keyword] == item[keyword]) || result.push(item)
}else{
keywordArr.every(i => {
return result.some(ite => ite[i] == item[i])
}) || result.push(item)
}
}
return result;
}
const objss = [{
id: 1,
name: "小明",
age: 12,
sex: "男"
}, {
id: 2,
name: "小红",
age: 15,
sex: "女"
}, {
id: 3,
name: "小亮",
age: 12,
sex: "男"
}, {
id: 4,
name: "小明",
age: 17,
sex: "男"
}];
const uniqueObjss = removeDuplicates(objs, ['sex',"age"]);
console.log(uniqueObjss);
/**
{id: 1, name: '小明', age: 12, sex: '男'}
{id: 2, name: '小红', age: 15, sex: '女'}
{id: 4, name: '小明', age: 17, sex: '男'}
*/
</script>
</body>
</html>