数组中既有引用数据类型元素,也有基本数据类型元素,如何去重
时间: 2024-05-02 17:20:23 浏览: 14
可以采用以下步骤去重:
1. 将数组中的所有元素转换为字符串类型,可以使用 toString() 方法或者 JSON.stringify() 方法进行转换。
2. 使用 Set 数据结构对转换后的字符串数组进行去重,Set 可以自动去除重复元素。
3. 将去重后的字符串数组转换回原始数据类型,可以使用 map() 方法对每个元素进行转换。
下面是示例代码:
```javascript
let arr = [1, "2", 3, "2", {name: "Tom"}, {name: "Tom"}];
let strArr = arr.map(item => JSON.stringify(item));
let uniqueStrArr = [...new Set(strArr)];
let uniqueArr = uniqueStrArr.map(item => {
try {
return JSON.parse(item);
} catch (e) {
return item;
}
});
console.log(uniqueArr); // [1, "2", 3, {name: "Tom"}]
```
需要注意的是,如果数组中含有 NaN 或者 Infinity 等特殊数字类型,需要特殊处理。另外,如果数组中含有函数类型或者 Symbol 类型等无法转换为字符串的元素,也需要特殊处理。
相关问题
c语言中,数组元素只能是基本数据类型吗?
在 C 语言中,数组元素不仅可以是基本数据类型,还可以是结构体、指针、联合体等复合数据类型。例如,定义一个包含整型、浮点型和字符型的数组可以这样写:
```c
int arr1[3] = {1, 2, 3};
float arr2[3] = {1.2, 3.4, 5.6};
char arr3[3] = {'a', 'b', 'c'};
```
而定义一个包含结构体的数组可以这样写:
```c
struct student {
char name[20];
int age;
float score;
};
struct student arr[3] = {
{"Tom", 18, 90.5},
{"Jerry", 19, 85.5},
{"Micky", 20, 92.5}
};
```
在数组中,每个元素都可以是一个结构体类型的变量,而且数组的每个元素都可以具有不同的结构体类型。
js引用数据类型数组去重
可以使用ES6中的Set和Spread运算符来实现数组去重。
示例代码:
```
const arr = [1, 2, 3, 4, 5, 2, 4];
const uniqueArr = [...new Set(arr)];
console.log(uniqueArr); // [1, 2, 3, 4, 5]
```
解释:
- 首先,我们创建了一个包含重复元素的数组`arr`。
- 接着,我们使用`new Set(arr)`方法创建一个Set对象,Set对象会自动去重。
- 最后,我们使用Spread运算符将Set对象转换成数组,并将其赋值给`uniqueArr`变量。
- 最终结果打印出来,即为去重后的数组。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)