springboot和vue使用stream().map方法
1. 前端使用map方式返回对象List集合中某个属性的List集合
// this.multipleSelection--对象list集合,id--对象属性
let ids = this.multipleSelection.map(v => v.id)
2. 后端使用stream().map方式返回对象List集合中某个属性的List集合
public boolean deleteDictData(List<Long> id){
LambdaQueryWrapper<DictType> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(DictType::getDeleteStatus,0);
queryWrapper.in(DictType::getId,id);
List<DictType> dictTypeList = this.list(queryWrapper); // 获取对象List集合
// 返回对象dictType属性集合
List<String> collect = dictTypeList.stream().map(DictType::getDictType).collect(Collectors.toList());
return dictDataService.updateDeleteStatusByDictType(collect);
}
3. 根据对象List某个字段筛选数据
public Result getMenuList(String name) {
LambdaQueryWrapper<Menu> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(Menu::getDeleteStatus,0);
if (StringUtils.isNotEmpty(name)){
queryWrapper.like(Menu::getName,name);
}
// 查询所有数据
List<Menu> list = list(queryWrapper);
// 找出pid为null的一级菜单
List<Menu> parentNodes = list.stream().filter(menu -> menu.getPid() == null).collect(Collectors.toList());
// 找出一级菜单的子菜单
for (Menu menuItem : parentNodes) {
// 筛选所有数据中pid=父级id的数据就是二级菜单
menuItem.setChildren(list.stream().filter(m -> menuItem.getId().equals(m.getPid())).collect(Collectors.toList()));
}
return Result.success(parentNodes);
}
4. 前端使用map和reduce统计总和
let arr = [1, 2, 3, 4, 5];
let sum = arr.reduce(function (prev, cur, index, arr) {
console.log(prev, cur, index);
return prev + cur;
});
console.log('arr:', arr, 'sum:', sum);