m0_56789428 2024-01-19 09:08 采纳率: 97.4%
浏览 10
已结题

复杂数组批量处理指定参数,相同name时,value乘multiple

var lineArr
[
    {
        "id": "940226949765136385",
        "multiple": 1, // 倍数
        "lineName": "线名1"
    },
    {
        "id": "940284872331624450",
        "multiple": "1.2",  // 倍数
        "lineName": "线名2"
    }
]

eCharts 折线图 series参数

var data
[
    {
        "name": "线名1",
        "type": "line",
        "data": [
            {
                "name": "2024-01-19 06:00:00",
                "value": [
                    "2024-01-19 06:00:00",
                    "81.56"
                ]
            },
            {
                "name": "2024-01-19 07:00:00",
                "value": [
                    "2024-01-19 07:00:00",
                    "85.16"
                ]
            },
            {
                "name": "2024-01-19 08:00:00",
                "value": [
                    "2024-01-19 08:00:00",
                    "88.76"
                ]
            }
        ],
        "showSymbol": false,
        "markLine": []
    },
    {
        "name": "线名2",
        "type": "line",
        "data": [
            {
                "name": "2024-01-19 06:00:00",
                "value": [
                    "2024-01-19 06:00:00",
                    "6.82"
                ]
            },
            {
                "name": "2024-01-19 07:00:00",
                "value": [
                    "2024-01-19 07:00:00",
                    "6.85"
                ]
            },
            {
                "name": "2024-01-19 08:00:00",
                "value": [
                    "2024-01-19 08:00:00",
                    "6.89"
                ]
            }
        ],
        "showSymbol": false,
        "markLine": []
    }
]

img

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2024-01-19 12:24
    关注

    【以下回答由 GPT 生成】

    // 定义原始数据
    var lineArr = [
        {
            "id": "940226949765136385",
            "multiple": 1,
            "lineName": "线名1"
        },
        {
            "id": "940284872331624450",
            "multiple": "1.2",
            "lineName": "线名2"
        }
    ];
    
    var data = [
        {
            "name": "线名1",
            "type": "line",
            "data": [
                {
                    "name": "2024-01-19 06:00:00",
                    "value": [
                        "2024-01-19 06:00:00",
                        "81.56"
                    ]
                },
                {
                    "name": "2024-01-19 07:00:00",
                    "value": [
                        "2024-01-19 07:00:00",
                        "85.16"
                    ]
                },
                {
                    "name": "2024-01-19 08:00:00",
                    "value": [
                        "2024-01-19 08:00:00",
                        "88.76"
                    ]
                }
            ],
            "showSymbol": false,
            "markLine": []
        },
        {
            "name": "线名2",
            "type": "line",
            "data": [
                {
                    "name": "2024-01-19 06:00:00",
                    "value": [
                        "2024-01-19 06:00:00",
                        "6.82"
                    ]
                },
                {
                    "name": "2024-01-19 07:00:00",
                    "value": [
                        "2024-01-19 07:00:00",
                        "6.85"
                    ]
                },
                {
                    "name": "2024-01-19 08:00:00",
                    "value": [
                        "2024-01-19 08:00:00",
                        "6.88"
                    ]
                }
            ],
            "showSymbol": false,
            "markLine": []
        }
    ];
    
    // 倍数处理函数
    function processMultiple(dataArr, line) {
        if (typeof line.multiple === 'number') { // 如果multiple是数字直接乘以value
            dataArr.forEach(obj => {
                if (obj.name === line.lineName) {
                    obj.data.forEach(item => {
                        item.value[1] = (parseFloat(item.value[1]) * line.multiple).toFixed(3); // 保留三位小数
                    });
                }
            });
        } else if (typeof line.multiple === 'string') { // 如果multiple是字符串,先转为数字再乘以value
            dataArr.forEach(obj => {
                if (obj.name === line.lineName) {
                    obj.data.forEach(item => {
                        item.value[1] = (parseFloat(item.value[1]) * parseFloat(line.multiple)).toFixed(3); // 保留三位小数
                    });
                }
            });
        }
    }
    
    // 遍历lineArr数组,处理数据
    lineArr.forEach(line => {
        processMultiple(data, line);
    });
    
    // 返回处理后的data数组
    console.log(data);
    


    【相关推荐】



    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 1月27日
  • 已采纳回答 1月19日
  • 创建了问题 1月19日

悬赏问题

  • ¥15 Mac版Fiddler Everywhere4.0.1提示强制更新
  • ¥15 android 集成sentry上报时报错。
  • ¥50 win10链接MySQL
  • ¥35 跳过我的世界插件ip验证
  • ¥15 抖音看过的视频,缓存在哪个文件
  • ¥15 自定义损失函数报输入参数的数目不足
  • ¥15 如果我想学习C大家有是的的资料吗
  • ¥15 根据文件名称对文件进行排序
  • ¥15 deploylinux的ubuntu系统无法成功安装使用MySQL❓
  • ¥15 有人会用py或者r画这种图吗