javascript在数组里面找不同的属性值组成数组
时间: 2023-08-30 17:04:04 浏览: 89
你可以使用JavaScript的Array.reduce()方法来实现将不同的属性值组成一个数组。以下是一个示例代码:
```javascript
const data = [
{ id: 1, name: 'John', age: 30 },
{ id: 2, name: 'Jane', age: 25 },
{ id: 3, name: 'Bob', age: 30 },
{ id: 4, name: 'Alice', age: 25 }
];
const distinctAges = data.reduce((acc, curr) => {
if (!acc.includes(curr.age)) {
acc.push(curr.age);
}
return acc;
}, []);
console.log(distinctAges); // [30, 25]
```
在上面的代码中,我们使用reduce()方法来遍历数据对象数组,并将不同的年龄值添加到结果数组中。我们使用includes()方法检查结果数组中是否已经包含当前值,如果没有则将其添加到结果数组中。最后,我们输出结果数组。
你可以根据需要更改属性名称和输入数据。
相关问题
两个对象数组,把不同的找出来
假设我们有两个对象数组 arr1 和 arr2,每个对象都有一些属性。要找出 arr1 中不同于 arr2 的对象,可以使用以下步骤:
1. 遍历 arr1 中的每个对象。
2. 对于每个对象,在 arr2 中查找具有相同属性值的对象。
3. 如果找到了相同属性值的对象,则继续遍历 arr1 的下一个对象。
4. 如果没有找到相同属性值的对象,则将当前对象添加到结果数组中。
5. 遍历完 arr1 中的所有对象后,返回结果数组。
以下是一个示例代码实现:
```javascript
function findDifferentObjects(arr1, arr2) {
const result = [];
for (const obj1 of arr1) {
let found = false;
for (const obj2 of arr2) {
if (isEqual(obj1, obj2)) {
found = true;
break;
}
}
if (!found) {
result.push(obj1);
}
}
return result;
}
function isEqual(obj1, obj2) {
// 判断两个对象是否相等,略
// 可以使用 Lodash 的 isEqual 方法
}
// 示例用法
const arr1 = [{ id: 1, name: 'Alice' }, { id: 2, name: 'Bob' }, { id: 3, name: 'Charlie' }];
const arr2 = [{ id: 1, name: 'Alice' }, { id: 4, name: 'David' }];
const diff = findDifferentObjects(arr1, arr2);
console.log(diff); // [{ id: 2, name: 'Bob' }, { id: 3, name: 'Charlie' }]
```
在上面的示例中,我们定义了两个数组 arr1 和 arr2,它们包含一些对象。我们调用了 findDifferentObjects 函数,并将这两个数组作为参数传递给它。
函数执行后,返回 arr1 中不同于 arr2 的对象,即 [{ id: 2, name: 'Bob' }, { id: 3, name: 'Charlie' }]。这些对象在 arr2 中不存在,因此它们是 arr1 中的独特对象。
阅读全文