使用JavaScript/JQuery将特定格式数组转换为目标字符串
解决方案
可以通过分组+拼接的方式实现需求,以下是JavaScript的具体实现:
步骤说明
- 按主编号分组:将数组按第二个元素(主编号)归类,收集对应所有子编号(第三个元素)。
- 生成每组字符串:遍历分组结果,将主编号与子编号用下划线拼接,子编号之间也用下划线连接。
- 拼接最终字符串:将所有组的字符串用斜杠
/分隔,得到目标格式。
代码实现
const arr = [[9,222,3],[9,222,4],[9,333,1],[9,333,2],[9,444,1]]; // 1. 按主编号分组 const grouped = arr.reduce((acc, item) => { const mainId = item[1]; const subId = item[2]; if (!acc[mainId]) { acc[mainId] = []; } acc[mainId].push(subId); return acc; }, {}); // 2. 生成每组字符串并拼接最终结果 const result = Object.entries(grouped) .map(([mainId, subIds]) => `${mainId}_${subIds.join('_')}`) .join('/'); console.log(result); // 输出:222_3_4/333_1_2/444_1
代码解释
reduce遍历原数组,以主编号为键,将对应的子编号存入数组,构建出{222: [3,4], 333: [1,2], 444: [1]}的分组对象。Object.entries将分组对象转为键值对数组,再通过map把每组的主编号和子编号数组拼接成主编号_子编号1_子编号2的格式。- 最后用
join('/')把所有组的字符串连接起来,得到目标格式。
内容的提问来源于stack exchange,提问作者Shivam Mishra
相关产品推荐
相关产品推荐

