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

如何遍历嵌套数组元素并拼接,生成随机组合名称?

解决方案

先明确你要实现的核心:从node1.g取元素作为前缀,和其他节点的数组元素做两种组合——前缀+单个元素、前缀+node3元素+对应位置的node5元素,最终生成可随机排序的名称组合。下面是具体实现:

1. 提取目标数组

先把需要参与组合的数组提取出来,简化后续操作:

const names = {
    node1: {
        g: ['ro', 'cf', 'de'],
        h: ['no', 'ei','ie', 'ak'],
    },
    node3: {
        k: ['di', 'eik', 'dn'],
        f: ['ei', 'ci', 'ao'],
    },
    node5: {
        a: ['dc','eg', 'io'],
        b: ['ei', 'ik', 'cf'],
    }
};

// 前缀数组(node1.g)
const prefixes = names.node1.g;
// node3下所有元素合并
const node3Items = [...names.node3.k, ...names.node3.f];
// node5下所有元素合并
const node5Items = [...names.node5.a, ...names.node5.b];
// node3与node5对应位置的元素对(用于三者组合)
const pairedItems = [
    ...names.node3.k.map((item, idx) => [item, names.node5.a[idx]]),
    ...names.node3.f.map((item, idx) => [item, names.node5.b[idx]])
];

2. 生成组合结果

遍历前缀数组,生成两种组合并收集结果:

const finalResults = [];

prefixes.forEach(prefix => {
    // 第一部分:前缀 + 单个node3/node5元素
    node3Items.forEach(item => finalResults.push(`${prefix} ${item}`));
    node5Items.forEach(item => finalResults.push(`${prefix} ${item}`));

    // 第二部分:前缀 + node3元素 + 对应node5元素
    pairedItems.forEach(([n3Item, n5Item]) => {
        finalResults.push(`${prefix} ${n3Item} ${n5Item}`);
    });
});

3. 随机排序(满足随机名称需求)

如果需要随机输出名称,用洗牌算法打乱结果数组:

// Fisher-Yates 洗牌算法
function shuffle(arr) {
    for (let i = arr.length - 1; i > 0; i--) {
        const j = Math.floor(Math.random() * (i + 1));
        [arr[i], arr[j]] = [arr[j], arr[i]];
    }
    return arr;
}

// 输出打乱后的结果
console.log(shuffle(finalResults).join('\n'));

输出示例(以ro为前缀)

运行后会得到你期望的格式:

ro di
ro eik
ro dn
ro ei
ro ci
ro ao
ro dc
ro eg
ro io
ro ei
ro ik
ro cf
ro di dc
ro eik eg
ro dn io
ro ei ei
ro ci ik
ro ao cf

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 09:49:16