You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel中如何在JS中获取控制器变量的name属性数组?

嘿,我来帮你搞定这个问题!你有两种靠谱的方式可以得到仅包含注册类型名称的数组:一种是在前端JS里处理现有数据,另一种是直接在Laravel后端返回你需要的结果,后者其实更省心高效,我都给你说说~

方法一:前端JavaScript处理现有对象数组

你现在拿到的rtypes是一个包含完整对象的数组,咱们可以用JavaScript的Array.map()方法来提取每个对象里的name属性,生成新数组:

<script type="text/javascript">
    var rtypes = {!! $registration_type !!};
    // 遍历数组,提取每个元素的name属性组成新数组
    var rtypeNames = rtypes.map(function(item) {
        return item.name;
    });
    // ES6箭头函数写法更简洁:
    // var rtypeNames = rtypes.map(item => item.name);
    
    // 现在rtypeNames就是你要的['general', 'plus', ...]啦
    console.log(rtypeNames);
</script>

map()方法会遍历原数组的每一项,把你指定的返回值(这里是item.name)收集起来,形成一个全新的数组,完全不会修改原有的rtypes变量。

方法二:Laravel后端直接返回名称数组(更推荐)

其实咱们可以在后端就把数据处理好,前端直接用现成的数组,这样既减少了前端的计算量,也能让前端代码更简洁。只需要修改控制器里的查询代码,用pluck()方法直接获取name字段:

public function edit($id)
{
    $conf = Conf::find($id);
    // 直接获取所有符合条件的registration_type的name字段,转成数组
    $registrationType = RegistrationType::where('conf_id', $id)->pluck('name')->toArray();
    return view('questions.edit')
        ->with('registration_type', $registrationType);
}

这样前端拿到的$registration_type已经是['general', 'plus', ...]格式的数组了,直接用就行:

<script type="text/javascript">
    var rtypes = {!! $registration_type !!};
    // 现在rtypes就是你需要的名称数组啦
    console.log(rtypes);
</script>

内容的提问来源于stack exchange,提问作者user9289573

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:11:09