js 两个对象中只保留相同的属性
时间: 2023-11-22 09:56:14 浏览: 44
可以使用以下代码实现:
```javascript
function intersectObjects(obj1, obj2) {
const result = {};
for (const prop in obj1) {
if (prop in obj2) {
result[prop] = obj1[prop];
}
}
return result;
}
```
这个函数接受两个对象 `obj1` 和 `obj2` 作为参数,返回一个新的对象,只包含这两个对象中都有的属性。它遍历 `obj1` 中的所有属性,如果这个属性也存在于 `obj2` 中,则将它添加到 `result` 对象中。最后返回 `result` 对象即可。
相关问题
js 数组对象中两个相同对象去重
在 JavaScript 中,可以使用 `filter` 方法结合 `indexOf` 或者 `includes` 方法来对数组对象中的相同对象进行去重操作。下面是一个示例代码:
```javascript
let array = [
{ id: 1, name: 'John' },
{ id: 2, name: 'Jane' },
{ id: 1, name: 'John' },
{ id: 3, name: 'Alice' }
];
let uniqueArray = array.filter((item, index) => {
return index === array.findIndex(obj => obj.id === item.id && obj.name === item.name);
});
console.log(uniqueArray);
```
在上述代码中,`filter` 方法会遍历数组中的每个对象。对于每个对象,`indexOf` 或者 `includes` 方法会检查该对象在数组中的第一个索引位置。如果当前索引和第一个索引位置相同,说明该对象是唯一的,将其保留在新的数组 `uniqueArray` 中。
运行上述代码后,输出结果为:
```
[
{ id: 1, name: 'John' },
{ id: 2, name: 'Jane' },
{ id: 3, name: 'Alice' }
]
```
注意,这里的去重逻辑是判断对象的 `id` 和 `name` 属性是否都相等。你可以根据实际需求修改判断条件。
去除两数组相同属性,保留一个,并合并
假设你有两个数组 `arr1` 和 `arr2`,它们都包含对象,每个对象可能有相同的属性。你可以按照以下步骤去除两个数组中相同的属性,保留一个,并将它们合并成一个新的数组:
1. 创建一个空数组 `result` 用于存储结果。
2. 将 `arr1` 中的所有对象的属性值存储在一个新的数组 `arr1Values` 中。
3. 遍历 `arr2` 中的所有对象,对于每个对象:
- 检查该对象的属性值是否在 `arr1Values` 数组中出现过。
- 如果该属性值出现过,则忽略该对象。
- 如果该属性值没有出现过,则将该对象添加到 `result` 数组中,并将该属性值添加到 `arr1Values` 数组中。
4. 将 `arr1` 中的所有对象添加到 `result` 数组中(这些对象的属性值已经在 `arr1Values` 数组中出现过)。
5. 返回 `result` 数组作为结果。
以下是使用 JavaScript 代码实现上述算法的示例:
```javascript
function mergeArrays(arr1, arr2) {
const result = [];
const arr1Values = [];
// 遍历 arr1 并将其属性值存储在 arr1Values 数组中
for (const obj of arr1) {
arr1Values.push(obj.property);
}
// 遍历 arr2 并检查每个对象的属性值是否在 arr1Values 数组中出现过
for (const obj of arr2) {
if (!arr1Values.includes(obj.property)) {
result.push(obj);
arr1Values.push(obj.property);
}
}
// 将 arr1 中的所有对象添加到结果数组中
result.push(...arr1);
return result;
}
```
请注意,此示例假设对象具有名为 `property` 的属性,你需要将其替换为你要比较的实际属性名称。此外,如果你想比较多个属性而不仅仅是一个属性,则可以将 `arr1Values` 数组更改为包含所有要比较的属性值的数组,并在比较时同时检查它们。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![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)