前端数组转集合
时间: 2023-07-25 18:21:43 浏览: 48
可以使用 ES6 中的 Set 对象来将数组转换为集合。Set 对象是一种集合数据类型,可以用来存储一组唯一的值。可以通过以下代码将数组转换为 Set 对象:
```
const arr = [1, 2, 3, 2, 1];
const set = new Set(arr);
```
这里的 `arr` 是原始数组,`set` 是转换后的集合。由于集合只存储不重复的值,所以 `set` 中只会包含 `1`、`2`、`3` 这三个元素。
如果需要将集合转换回数组,可以使用扩展运算符 `...`,如下所示:
```
const arrFromSet = [...set];
```
相关问题
前端传一个数组或者集合后台怎么接受的实现代码
答:如果是使用GET方式传递数组或集合,则可以将数组或集合转化为字符串,使用encodeURIComponent方法进行编码,然后拼接到URL后面;如果是使用POST方式传递,则可以将数组或集合封装在一个JSON对象或FormData对象中,并通过ajax等方式发送到后台,后台可以使用相应的框架或语言进行解析。以下是一个示例代码:
前端代码:
```
let arr = [1,2,3];
let formData = new FormData();
formData.append('nums', JSON.stringify(arr));
$.ajax({
url: '后台接口地址',
type: 'POST',
data: formData,
processData: false,
contentType: false,
success: function(data){
console.log(data);
},
error: function(error){
console.log(error);
}
});
```
后台代码(使用Java Spring框架):
```
@ResponseBody
@RequestMapping(value = "/test", method = RequestMethod.POST)
public String test(@RequestParam(value = "nums", required = true) String nums){
ObjectMapper objectMapper = new ObjectMapper();
try {
List<Integer> numList = objectMapper.readValue(nums, new TypeReference<List<Integer>>(){});
System.out.println(numList);
return "success";
} catch (IOException e) {
e.printStackTrace();
return "error";
}
}
```
前端如何去重数组对象
前端去重数组对象可以通过以下几种方法实现:
1. 使用Set数据结构:将数组转成Set集合,再将Set集合转回数组即可去重。需要注意的是,Set中比较对象是否相等是根据对象的引用地址进行比较的,因此需要重写对象的equals方法来比较对象的属性值是否相等。
2. 使用reduce函数:利用reduce函数遍历数组,将每个元素添加到结果数组中,如果结果数组中已经存在相同的元素,则不添加。
3. 使用filter函数:使用filter函数遍历数组,对每个元素使用findIndex函数查找是否已经存在相同元素,如果不存在则返回该元素。
下面是一个使用Set数据结构去重的例子:
```javascript
const arr = [{id: 1, name: 'Tom'}, {id: 2, name: 'Jerry'}, {id: 1, name: 'Tom'}];
const result = Array.from(new Set(arr.map(item => JSON.stringify(item)))).map(item => JSON.parse(item));
console.log(result); // [{id: 1, name: 'Tom'}, {id: 2, name: 'Jerry'}]
```
这里使用了JSON.stringify和JSON.parse方法将对象转成字符串再转回对象,以便使用Set集合去重。