一、数组合并去重方法
数组合并去重是指将多个数组合并成一个新的数组,并保证其中的元素不重复。这种方法在很多语言中都有现成的函数实现,比如PHP中的array_merge()函数和array_unique()函数,JavaScript中的concat()方法和Set对象,等等。以下为PHP实现的例子:
$arr1 = array('a', 'b', 'c');
$arr2 = array('b', 'c', 'd');
$newArr = array_unique(array_merge($arr1, $arr2));
print_r($newArr); // 输出:Array ( [0] => a [1] => b [2] => c [4] => d )
当然,在某些语言中可能没有现成的函数实现,需要自行编写算法来完成。下面介绍一种基于哈希表实现的算法:
function mergeUnique(arr1, arr2) {
var hash = {};
var result = [];
for (var i = 0; i < arr1.length; i++) {
if(!hash[arr1[i]]) {
hash[arr1[i]] = true;
result.push(arr1[i]);
}
}
for (var i = 0; i < arr2.length; i++) {
if(!hash[arr2[i]]) {
hash[arr2[i]] = true;
result.push(arr2[i]);
}
}
return result;
}
console.log(mergeUnique(['a', 'b', 'c'], ['b', 'c', 'd'])); // 输出:["a", "b", "c", "d"]
二、两个数组合并去重
有时候我们仅需要合并两个数组,以下为常见的代码实现:
$arr1 = array('a', 'b', 'c');
$arr2 = array('b', 'c', 'd');
$newArr = array_merge(array_diff($arr1, $arr2), array_diff($arr2, $arr1), array_intersect($arr1, $arr2));
print_r($newArr); // 输出:Array ( [0] => a [1] => d )
以上代码使用array_diff()函数获取两个数组的差集,用array_intersect()函数获取交集,再将结果合并即可得到合并去重后的新数组。
三、数组合并去重并排序C语言
在C语言中,数组合并去重后需要排序,以下为代码实现:
#include<stdio.h>
#include<stdlib.h>
#define N 10
void Sort(int *a, int n)
{
int i, j, temp;
for (i = 0; i < n - 1; i++)
{
for (j = 0; j < n - 1 - i; j++)
{
if (*(a+j) > *(a+j+1))
{
temp = *(a+j);
*(a+j) = *(a+j+1);
*(a+j+1) = temp;
}
}
}
}
int MergeUnique(int *arr1, int n1, int *arr2, int n2, int *newArr)
{
int *p = newArr;
int *end = newArr;
int *temp = (int*)malloc(sizeof(int) * (n1 + n2));
int *i, *j;
for (i = arr1; i < arr1 + n1; i++)
{
for(j = arr2; j < arr2 + n2; j++)
{
if(*i == *j) break;
}
if(j == arr2 + n2)
{
*temp = *i;
temp++;
}
}
for (i = arr2; i < arr2 + n2; i++)
{
*temp = *i;
temp++;
}
temp = (int*)realloc(temp, (temp - newArr) * sizeof(int));
memcpy(newArr, newArr, (temp - newArr) * sizeof(int));
end = temp;
Sort(newArr, end - newArr);
return end - newArr;
}
int main()
{
int arr1[N] = {1,2,2,3,4,5,6,7,7,8};
int arr2[N] = {0,0,2,4,5,6,9,9,9,10};
int newArr[N];
int n = MergeUnique(arr1, 10, arr2, 10, newArr);
for(int i = 0; i < n; i++) printf("%d ", newArr[i]);
return 0;
}
四、c数组合并去重
除了C语言的方法外,还可以使用以下代码实现:
#include<stdio.h>
int main()
{
int arr1[5] = {1,3,5,7,9};
int arr2[5] = {2,4,6,8,10};
int newArr[10], sum = 5;
for(int i = 0; i < 5; i++)
{
int j, k;
for(j = 0; j < sum; j++)
if(arr1[i] == newArr[j]) break;
if(j == sum) newArr[sum++] = arr1[i];
}
for(int i = 0; i < 5; i++)
{
int j, k;
for(j = 0; j < sum; j++)
if(arr2[i] == newArr[j]) break;
if(j == sum) newArr[sum++] = arr2[i];
}
for(int i = 0; i < sum; i++) printf("%d ", newArr[i]);
return 0;
}
五、js数组合并去重
JavaScript中的Set对象可以去除重复元素,以下为代码实现:
let arr1 = [1, 2, 3];
let arr2 = [2, 3, 4];
let newArr = [...new Set([...arr1, ...arr2])];
console.log(newArr); // 输出[1, 2, 3, 4]
六、php数组合并去重
PHP中的array_unique()函数可以去除重复元素,以下为代码实现:
$arr1 = array('a', 'b', 'c');
$arr2 = array('b', 'c', 'd');
$newArr = array_unique(array_merge($arr1, $arr2));
print_r($newArr); // 输出:Array ( [0] => a [1] => b [2] => c [4] => d )
七、数组对象去重方法
在处理对象数组时,需要注意对象属性的比较,以下为常见的代码实现:
let arr1 = [{id:1,name:'name1'},{id:2,name:'name2'},{id:3,name:'name3'}];
let arr2 = [{id:3,name:'name3'},{id:4,name:'name4'}];
let newArr = arr1.concat(arr2).reduce((prev, cur) => {
let flag = prev.every(item => item.id !== cur.id);
if (flag) prev.push(cur);
return prev;
}, []);
console.log(newArr); // 输出:[{id:1,name:'name1'},{id:2,name:'name2'},{id:3,name:'name3'},{id:4,name:'name4'}]
八、两组数据合并去重
当处理不同格式的数据合并时,可以使用以下代码实现:
let arr1 = ['a', 'b', 'c'];
let arr2 = [{id:1, name:'name1'},{id:2, name:'name2'}];
let newArr = [...new Set([...arr1, ...arr2.map(item => item.name)])];
console.log(newArr); // 输出:["a", "b", "c", "name1", "name2"]
九、前端两个数组合并成一个
在前端开发中,经常需要将多个数组合并成一个数组,以下为代码实现:
let arr1 = ['a', 'b', 'c'];
let arr2 = ['b','c','d'];
let newArr = [...arr1, ...arr2];
console.log(newArr); // 输出:["a", "b", "c", "b", "c", "d"]
以上就是关于数组合并去重的多个方面的详细阐述,包括方法实现、排序、对象数组去重、多类型数据合并去重、前端数组合并等方面的内容,希望对您有所帮助。