marlsun 2022-11-03 09:08 采纳率: 84.2%
浏览 110
已结题

echarts 桑基图dataLinks的自定义方法


let arr1 = [{ type: "t1", chr: "多躲大定夺" }];
let arr2 = [
  { type: "t2", chr: "多躲大打弟" },
  { type: "d2", chr: "定夺洞" },
];

let arr3 = [
  {source: "t1", target: "t2", value: 3},
  {source: "t1", target: "d2", value: 2}
]

想从arr1和arr2实现arr3。
根据chr属性值:
当arr1的 chr值与arr2[0]中chr相同时,为source赋值't1", target赋值"t2", 并根据相同的数量赋值value;
当arr1的 chr值与arr2[1]中chr相同时,为source赋值't1", target赋值"d2",并根据相同的数量赋值value;

  • 写回答

6条回答 默认 最新

  • 游一游走一走 2022-11-03 09:31
    关注
    let arr1 = [{type: "t1", chr: "多躲大定夺"}];
    let arr2 = [
        {type: "t2", chr: "多躲大打弟"},
        {type: "d2", chr: "定夺洞"},
    ];
    
    let arr3 = [
        {source: "t1", target: "t2", value: 3},
        {source: "t1", target: "d2", value: 2}
    ]
    
    /**
     * 计算相似度的函数需要你来实现了,目前的悬赏额度我写不出完美的,所以写死了
     * @param str1
     * @param str2
     * @returns {number}
     */
    function test(str1, str2) {
        let char1 = str1.split('');
        let char2 = str2.split('');
        let count = 0;
        for (let i = 0; i < char1.length; i++) {
            for (let j = 0; j < char2.length; j++) {
                if (char1[i] == char2[j]) {
                    count++
                }
            }
        }
        return count;
    }
    
    let result = arr2.map(item => {
        let filter = arr1.map(subItem => ({
            ...subItem,
            value: test(subItem.chr, item.chr)
        })).filter(subItem => subItem.value > 0);
        filter = filter[0] || {value: 0}
        return ({
            source: filter.type,
            target: item.type,
            value: filter.value
        })
    }).filter(item => item.value > 0);
    
    console.log(result)
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(5条)

报告相同问题?

问题事件

  • 系统已结题 11月11日
  • 已采纳回答 11月3日
  • 创建了问题 11月3日

悬赏问题

  • ¥15 github符合条件20分钟秒到账,github空投 提供github账号可兑换💰感兴趣的可以找我交流一下
  • ¥50 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?