本文介绍如何使用原生 javascript 将字符串数组(如 ['braid', 'write', 'pence', 'schmo'])按字符位置进行“垂直拼接”,生成新数组(如 ['bwps', 'rrec', 'ainh', 'itcm', 'deeo']),适用于矩阵转置类文本处理场景。
这种变换本质上是对字符串数组执行列优先转置(column-wise transpose):将原数组视为一个不规则字符矩阵(每行是一个字符串),然后提取第 0 列所有字符、第 1 列所有字符……直至最长字符串的末尾,每列拼成一个新字符串。
核心思路分三步:
;✅ 完整可运行示例:
const words = ['braid', 'write', 'pence', 'schmo'];
const result = Array.from(
{ length: Math.max(...words.map(w => w.length)) },
(_, i) => words.map(word => word[i] ?? '').join('')
);
console.log(result);
// → ['bwps', 'rrec', 'ainh', 'itcm', 'deeo']? 关键细节说明:
const maxLength = words.length ? Math.max(...words.map(w => w.length)) : 0;
const result = Array.from({ length: maxLength }, (_, i) =>
words.map(w => w[i] ?? '').join('')
);? 扩展提示:该模式也适用于其他“列聚合”需求,例如统计每列字符频次、取每列最大 ASCII 字符等,只需修改映射函数内部逻辑即可。