首页 > 解决方案 > 集合如何在一个运算符中使用 map 和 filter 方法?

问题描述

在 Laravel 6 中使用集合是否可以在一个操作符中使用 map 和 filter 方法?

我试过了:

$dataItems = ItemModel
    ::getById($id)
    ->get()
    ->map(function ($item) {
        $item['field1']  = 'value1';
        $item['field2']  = 'value2';
        ...
        
        if($conditionTrue) {
            return $item;
        }
        return false;
    })
    ->toArray();

但是当 $conditionTrue 为假时,我在结果数组中得到了空元素。

我可以做吗 ?

谢谢!

标签: laravel

解决方案


如果您真的出于某种原因不想只调用filter(),这将删除任何等效于 的项目false,在您调用之后,map(...)您可以使用回调filter,因为这些项目是对象:

->filter(function ($item) {
    $item['field1']  = 'value1';
    $item['field2']  = 'value2';
    ...

    return $condition;
})

推荐阅读