const arr = [ { name: '内容1', id: 1 }, { name: '内容2', id: 2 }, { name: '内容3', id: 3 }, { name: '内容4', id: 4 }, ] 使用reduce 方法 去重
时间: 2024-03-07 10:47:11 浏览: 18
你可以使用 reduce 方法和一个对象来实现数组去重。具体实现如下:
```
const arr = [
{ name: '内容1', id: 1 },
{ name: '内容2', id: 2 },
{ name: '内容3', id: 3 },
{ name: '内容2', id: 2 },
{ name: '内容4', id: 4 },
];
const uniqueArr = arr.reduce((acc, cur) => {
acc[cur.id] = cur;
return acc;
}, {});
console.log(Object.values(uniqueArr)); // [{ name: '内容1', id: 1 }, { name: '内容2', id: 2 }, { name: '内容3', id: 3 }, { name: '内容4', id: 4 }]
```
在这个例子中,我们使用 reduce 方法和一个空对象来实现数组去重。在每次迭代中,我们将当前元素的 `id` 作为对象的属性名,将当前元素本身作为属性值存储在对象中。由于对象的属性名是唯一的,这样就可以实现数组去重了。最后,我们使用 `Object.values` 方法获取对象的属性值,即去重后的数组。
相关问题
找出const arr = [ { name: 'ceshi1', value1: 345, value2: 85934 }, { name: 'ceshi2', value1: 3432, value2: 343432 }, ];的最大值
这个数组中有两个对象,每个对象有两个属性:value1和value2。如果你要求的是整个数组(包括两个对象)的最大值,那么可以使用以下代码:
```
const arr = [
{ name: 'ceshi1', value1: 345, value2: 85934 },
{ name: 'ceshi2', value1: 3432, value2: 343432 },
];
const result = Math.max(
...arr.map(obj => obj.value1),
...arr.map(obj => obj.value2)
);
console.log(result); // 输出 343432
```
这里使用了`Math.max()`函数来获取一组数字的最大值。我们使用了ES6的展开运算符`...`将两个`map()`函数的结果展开为一组数字,再将这组数字作为参数传递给`Math.max()`函数。
function checkIdExists(arr, id) { return arr.some(obj => obj.id === id); } const arr = [{id: 2, name: '111'}, {id: 3, name: 'name'}];这个方法不对
这个方法实际上是可以工作的,它使用了数组方法 `some()` 来查找是否有任何一个对象的 `id` 属性等于给定的 `id`。如果找到了匹配的对象,则返回 `true`,否则返回 `false`。
以下是使用该方法的示例:
```javascript
function checkIdExists(arr, id) {
return arr.some(obj => obj.id === id);
}
const arr = [{id: 2, name: '111'}, {id: 3, name: 'name'}];
console.log(checkIdExists(arr, 2)); // true
console.log(checkIdExists(arr, 4)); // false
```
在您的代码中,如果该方法没有按照预期工作,请提供更多的上下文或错误信息,以便我可以更准确地帮助您解决问题。