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

如何在JavaScript中将JSON字符串数组转换为键值对对象?

解决PHP传递数据到JS生成键值对对象的问题

方法一:在PHP端直接生成目标格式(推荐)

直接在PHP中构建关联数组,再通过json_encode输出成JS可直接识别的对象格式,避免前端额外处理:

修改后的PHP代码:

<?php
// 连接数据库
include("con.php");
// 查询语句
$query = "SELECT * FROM magacin_artikli";

$r = mysqli_query($conn, $query);

$dataGrafDodArt = array();

while($row = mysqli_fetch_array($r)){
    $key = $row["art_naz"];
    $value = (float)$row["art_nabcena"]; // 转换为数值类型,适配图表需求
    // 处理重复键:根据需求选择累加或覆盖
    if(isset($dataGrafDodArt[$key])){
        $dataGrafDodArt[$key] += $value; // 累加重复键对应的值
        // 若需覆盖则改为:$dataGrafDodArt[$key] = $value;
    } else {
        $dataGrafDodArt[$key] = $value;
    }
}

// 关闭连接
$conn->close();
?>

在JS中直接调用生成的对象:

var oData = <?php echo json_encode($dataGrafDodArt); ?>;

这样生成的oData就是你需要的键值对对象格式。

方法二:在JavaScript端转换现有数组

如果无法修改PHP代码,可在JS中遍历现有字符串数组,拆分键值并构建对象:

var oDataArray = ["asd:2","asd:3","asd:2","ddd:3"];
var oData = {};

oDataArray.forEach(item => {
    const [key, valueStr] = item.split(':');
    const value = parseFloat(valueStr);
    // 同样处理重复键:示例为累加,需覆盖则直接赋值
    if(oData[key]){
        oData[key] += value;
    } else {
        oData[key] = value;
    }
});

注意:对象的键具有唯一性,若数据源存在重复键(如示例中的asd),必须明确是覆盖还是累加对应的值,上述两种方法均提供了两种处理逻辑供选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 15:20:36