stream过滤对象中的属性
时间: 2024-05-11 18:20:15 浏览: 15
你可以使用JavaScript的Array.prototype.map()和Object.keys()方法来过滤对象中的属性。以下是一个示例代码:
```javascript
const arr = [
{ name: 'John', age: 25, gender: 'male' },
{ name: 'Jane', age: 30, gender: 'female' },
{ name: 'Bob', age: 20, gender: 'male' }
];
const filteredArr = arr.map(obj => {
const filteredObj = {};
Object.keys(obj).forEach(key => {
if (key !== 'age') {
filteredObj[key] = obj[key];
}
});
return filteredObj;
});
console.log(filteredArr);
```
在上面的代码中,我们创建了一个包含三个对象的数组。我们使用Array.prototype.map()方法遍历每个对象,并使用Object.keys()方法获取对象属性的键数组。然后,我们使用forEach()方法遍历键数组并检查每个键是否等于'age'。如果不是,则将该键和对应的值添加到一个新的过滤对象中。最后,我们将过滤对象返回到新的过滤数组中。
在这个例子中,我们过滤掉了每个对象的'age'属性。你可以根据需要修改这个过滤逻辑来满足你的需求。
相关问题
stream流过滤对象的某个属性
可以使用Java 8中的Stream API来过滤对象的某个属性。假设我们有一个类Person,它有一个属性age,现在我们想过滤出年龄大于等于18岁的人,可以按照以下步骤进行操作:
1. 创建一个List<Person>对象。
2. 使用stream()方法将List转换为Stream。
3. 使用filter()方法过滤出符合条件的元素,条件为person.getAge() >= 18。
4. 使用map()方法将Stream中的元素转换为另一个类型,例如将Person转换为其年龄。
5. 使用collect()方法将Stream转换为List。
以下是示例代码:
```
List<Person> personList = new ArrayList<>();
// 添加Person对象到personList中
List<Integer> ageList = personList.stream()
.filter(person -> person.getAge() >= 18)
.map(Person::getAge)
.collect(Collectors.toList());
```
这样,我们就过滤出了年龄大于等于18岁的人,并将他们的年龄转换为一个List。
java stream流 过滤对象中的某个属性
可以使用 stream 的 map() 方法,将对象中要过滤的属性映射出来,然后使用 filter() 方法进行过滤,最后使用 collect() 方法将过滤后的对象转为一个新的 list 。
例如:
List<Person> personList = new ArrayList<Person>();
personList.add(new Person("Alice", 26));
personList.add(new Person("Bob", 31));
personList.add(new Person("Charlie", 24));
List<Integer> ageList = personList.stream().map(Person::getAge).filter(age -> age > 25).collect(Collectors.toList());
这个例子将 Person 对象中的 age 属性映射出来,然后对 age 大于 25 的进行过滤,最后将符合条件的 age 转为一个新的列表 ageList。