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

InDesign脚本开发:按字符串部分匹配规则实现数组合并去重

InDesign 数组合并问题解决方案

原代码问题分析

  • 首先var r = a是引用赋值,直接指向原a数组,循环中不断往r里push元素会导致a的长度持续增长,外层for (var i=0; i<a.length; i++)的终止条件永远无法满足,最终出现死循环
  • 逻辑错误:每遍历一个a数组元素就把b数组中不匹配当前元素的项全部加入结果,会导致b数组元素被重复添加多次

正确实现代码

var a = ["LFC_Luis Felipe Corullón" , "FTP" , "FMTP"];
var b = ["LFC" , "FDOT" , "SAS" , "ADA" , "SAE"];

alert(merge(a,b));

function merge(a, b) {
    // 拷贝a数组所有元素到结果数组,避免修改原数组
    var result = a.slice();
    // 提取a数组所有元素的下划线前缀存入哈希表,提升匹配效率
    var prefixMap = {};
    for (var i = 0; i < a.length; i++) {
        var prefix = a[i].split("_")[0];
        prefixMap[prefix] = true;
    }
    // 遍历b数组,过滤掉匹配到前缀的元素后加入结果
    for (var j = 0; j < b.length; j++) {
        var currentB = b[j];
        if (!prefixMap[currentB]) {
            result.push(currentB);
        }
    }
    return result;
}

效果验证

针对你的示例输入:

var a = ['LFC_Luis Felipe Corullon', 'FTP', 'WWW'];
var b = ['SEMA', 'LFC', 'HTTP', 'AVC'];

运行代码后返回结果为['LFC_Luis Felipe Corullon', 'FTP', 'WWW', 'SEMA', 'HTTP', 'AVC'],完全符合需求。

内容的提问来源于stack exchange,提问作者Luis Felipe Corullón

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 10:51:02