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

jQuery遍历JSON拼接逗号分隔字符串仅返回首个值的解决方法

问题根因

你在$.each遍历逻辑中,每次迭代都直接对nama_status、jumlah变量做覆盖赋值,没有追加之前遍历得到的内容,循环结束后变量只会保留最后一次遍历的条目,无法得到全量拼接的结果。


修正方案

推荐用数组收集字段值后统一拼接的写法,逻辑更清晰,也不会出现多余分隔符问题,修改后的完整代码如下:

$.ajax({
    url:'<?= site_url('chartstatus') ?>',
    method:'get',
    success:function(response){
        // 初始化两个数组分别收集状态名称、统计数值
        const namaStatusCollect = [];
        const jumlahCollect = [];
        $.each(response.chartstatus, function(key, value){
            // 处理后的值推入对应数组
            namaStatusCollect.push(`"${value.abs_status.toString()}"`);
            jumlahCollect.push(value.total);
        });
        // 按要求格式拼接为带末尾逗号的字符串
        const nama_status = namaStatusCollect.join(', ') + ',';
        const jumlah = jumlahCollect.join(', ') + ',';
        
        console.log(nama_status);
        console.log(jumlah);
    } 
});

运行后输出结果完全符合预期:

  • jumlah输出:12, 5, 1,
  • nama_status输出:"Bekerja", "Tanpa Keterangan", "Hari Libur",

其他写法说明

如果习惯用字符串累加的方式实现,需要注意两个变量初始值要设为空字符串,循环中用+=操作符追加内容,示例如下:

success:function(response){
    let nama_status = '';
    let jumlah = '';
    $.each(response.chartstatus,function(key, value){
        const status = value['abs_status'].toString();
        nama_status += `"${status}", `;
        jumlah += `${value['total']}, `;
    });
    console.log(nama_status);
    console.log(jumlah);
}

这种写法逻辑简单,但最终生成的字符串末尾逗号后会多一个空格,且后续如果需要调整分隔符、过滤空值的话维护成本更高,优先推荐数组收集再拼接的方案。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 22:36:20