如何用原生JavaScript转换指定格式的字符串数组?
原生JavaScript实现字符串数组按索引位置拼接转置
给定输入数组:
['braid', 'write', 'pence', 'schmo']
需要生成新数组,其中每个元素由原数组所有字符串的对应索引字符依次拼接而成,输出结果为:
['bwps', 'rrec', 'ainh', 'itcm', 'deeo']
基础实现(假设所有字符串长度一致)
直接通过嵌套循环遍历每个索引位置,拼接对应字符:
const originalArr = ['braid', 'write', 'pence', 'schmo']; const transposedArr = []; const strCount = originalArr[0].length; // 遍历每个字符索引 for (let i = 0; i < strCount; i++) { let combined = ''; // 遍历原数组的每个字符串,取对应索引的字符 for (const str of originalArr) { combined += str[i]; } transposedArr.push(combined); } console.log(transposedArr); // 输出目标数组
兼容不同长度字符串的实现
如果原数组中存在长度不一致的字符串,可以先获取最长字符串的长度,对不足的位置补空字符(或根据需求忽略):
const originalArr = ['braid', 'write', 'pen', 'schmo']; const maxStrLength = Math.max(...originalArr.map(s => s.length)); const transposedArr = []; for (let i = 0; i < maxStrLength; i++) { let combined = ''; for (const str of originalArr) { // 字符串长度不足时补空,也可替换为其他占位符或跳过 combined += str[i] || ''; } transposedArr.push(combined); } console.log(transposedArr); // 输出 ["bwps", "rrec", "ainpn", "itcm", "deo"]
内容的提问来源于stack exchange,提问作者ChrisC
相关产品推荐
相关产品推荐

