const arr = [{column :[1,2],row:[3,4]},{column :[1,2],row:[3,4]}]; 使用reduce去重 结果为[{column :[1,2],row:[3,4]}]
时间: 2023-08-18 10:29:24 浏览: 40
可以使用 `reduce` 方法和 `some` 方法来完成数组对象的去重。具体步骤如下:
1. 使用 `reduce` 方法遍历数组,将每个对象的属性拼接成字符串。
2. 判断字符串是否已存在于结果数组中,如果不存在则将当前对象添加到结果数组中。
以下是代码示例:
```javascript
const arr = [{column:[1,2],row:[3,4]},{column:[1,2],row:[3,4]}];
const result = arr.reduce((acc, cur) => {
const isExist = acc.some(item => {
return JSON.stringify(item.column) === JSON.stringify(cur.column) &&
JSON.stringify(item.row) === JSON.stringify(cur.row);
});
if (!isExist) {
acc.push(cur);
}
return acc;
}, []);
console.log(result); // [{column:[1,2],row:[3,4]}]
```
这里使用了 `JSON.stringify` 方法将属性数组转换为字符串进行比较,因为直接比较数组会返回 false。
相关问题
const filterTag = (value: string, row: Act) => { return row.activityType === value } const filterHandler = ( value: string, row: Act, column: TableColumnCtx<Act> ) => { const property = column['property'] return row[property] === value }是什么意思
这段代码是用 TypeScript 编写的,定义了两个函数 `filterTag` 和 `filterHandler`。
`filterTag` 函数接收两个参数 `value` 和 `row`,分别表示用户输入和表格中的一行数据对象。该函数的作用是判断该行数据对象中的 `activityType` 属性是否等于用户输入的 `value`,如果相等则返回 `true`,否则返回 `false`。
`filterHandler` 函数也接收三个参数 `value`、`row` 和 `column`,分别表示用户输入、表格中的一行数据对象和表格中的一列数据对象。该函数的作用是获取 `column` 对象中的 `property` 属性,然后取出 `row` 对象中该属性所对应的值,判断该值是否等于用户输入的 `value`,如果相等则返回 `true`,否则返回 `false`。
这两个函数可以用于表格组件中的过滤功能,根据用户输入的条件过滤展示的数据。
const arr=["zhangsan","lisi"]怎么转换为{1:"zhangsan",2:"lisi"}
你可以使用 JavaScript 中的 `Array.prototype.reduce()` 方法来将数组转换为对象,其中 `reduce()` 方法接受两个参数:一个回调函数和一个初始值。回调函数接受四个参数:累加器、当前值、当前索引和原始数组。在每次迭代中,回调函数将累加器更新为一个新对象,该对象包含当前值及其对应的索引作为键。初始值应该是一个空对象 `{}`。
以下是将给定的数组 `arr` 转换为对象的代码:
```javascript
const arr = ["zhangsan", "lisi"];
const obj = arr.reduce((acc, val, idx) => {
acc[idx + 1] = val;
return acc;
}, {});
console.log(obj); // {1: "zhangsan", 2: "lisi"}
```
在上面的代码中,我们在每次迭代中将当前值和索引添加到累加器对象中,键是索引值加一,值是当前值。最终,`reduce()` 方法返回一个对象,其中包含原始数组中的每个值及其对应的索引作为键。