优化一下 String.valueOf(deptInfo.stream().filter(e -> String.valueOf(e.get("orgId")).equals(qybm)).map(e -> e.get("id")).findFirst().get())
时间: 2024-05-07 19:23:01 浏览: 10
可以使用 Optional 的 orElseThrow 方法,避免直接调用 get() 方法可能引发的 NoSuchElementException 异常。
具体代码如下:
```
deptInfo.stream()
.filter(e -> String.valueOf(e.get("orgId")).equals(qybm))
.map(e -> e.get("id"))
.findFirst()
.map(String::valueOf)
.orElseThrow(() -> new NoSuchElementException("未找到对应的部门信息"));
```
以上代码将首先筛选出 orgId 等于 qybm 的元素,并将它们的 id 属性映射为一个 Stream,然后在这个 Stream 上调用 findFirst() 方法,返回一个 Optional 类型的对象。接下来,我们可以利用 Optional 提供的方法进一步处理这个结果。在这里,我们使用 map() 方法将 id 属性的值转换为字符串类型,然后使用 orElseThrow() 方法,如果 Optional 对象为空则抛出 NoSuchElementException 异常。
相关问题
Invalid prop: type check failed for prop "orgId". Expected String with value "12", got Number with value 12.
这个错误是由于属性的类型不匹配导致的。根据引用、和,它们都提到了类型检查失败的错误。在你提供的例子中,属性"orgId"的期望值是字符串类型的"12",但实际上得到了一个数值类型的12。因此,你需要将属性"orgId"的值更改为字符串类型的"12",以使其与预期的类型匹配。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *3* [Invalid prop:type check failed for prop.Expected String with value“[object Object]”got Object](https://blog.csdn.net/qq_45796592/article/details/131870831)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *2* [[VUE]报错: Invalid prop: type check failed for prop “value“. Expected String, Number, got Array ...](https://blog.csdn.net/Loery1314/article/details/126597040)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
]) ->with('supervisorgroup') ->with('superviseegroup'); $projects = $gres->getLoad('isProjectHelper') ? $projects->where('orgid', $req->orgid) : $projects->whereIn('id', $gres->getLoad('projectids')); $projects = querykeywords($projects, ['name'], $req->keywords); $projects = $projects ->orderBy('name', 'DESC') ->orderBy('category') ->get() ->map(function ($project) { $_project = json_decode(json_encode($project)); $supervisorgroup = $project->supervisorgroup()->exists() ? $project->supervisorgroup()->first() : null; $superviseegroup = $project->superviseegroup()->exists() ? $project->superviseegroup()->first() : null; $_project->categoryname = Project::categories[$project->category]; $_project->supervisorgroupid = $supervisorgroup ? $supervisorgroup->id : 0; $_project->supervisorgroupname = $supervisorgroup ? $supervisorgroup->name : '尚未设置'; $_project->superviseegroupid = $superviseegroup ? $superviseegroup->id : 0; $_project->superviseegroupname = $superviseegroup ? $superviseegroup->name : '尚未设置'; return $_project; });
这部分代码对之前查询得到的$projects变量进行了一系列的处理和加工。
首先,使用with方法加载了'supervisorgroup'和'superviseegroup'关联模型。
接下来,根据$gres对象的属性判断是否需要根据orgid或projectids进行过滤。如果isProjectHelper为true,则根据req对象的orgid进行过滤,否则根据gres对象的projectids进行过滤。
然后,使用querykeywords函数对$projects进行了关键字搜索,搜索字段为'name',搜索关键字为req对象的keywords。
接着,对$projects进行了排序,首先按照'name'字段降序排序,然后按照'category'字段排序。
之后,调用get方法获取查询结果,并使用map方法对每个$project进行了一系列的处理。
在map方法中,首先将$project对象转换成了$_project对象,以便后续操作。然后,通过supervisorgroup和superviseegroup关联关系判断是否存在对应的关联记录,并分别赋值给$supervisorgroup和$superviseegroup变量。
接下来,给$_project对象添加了一些属性:'categoryname'表示项目类别的名称(根据项目类别从Project类的categories数组中获取),'supervisorgroupid'表示监督组的ID(如果存在监督组则取ID,否则为0),'supervisorgroupname'表示监督组的名称(如果存在监督组则取名称,否则为'尚未设置'),'superviseegroupid'表示受监督组的ID(如果存在受监督组则取ID,否则为0),'superviseegroupname'表示受监督组的名称(如果存在受监督组则取名称,否则为'尚未设置')。
最后,返回处理后的$_project对象。
如果你有任何疑问,请继续提问。