JavaScript按数组元素位置奇偶规则提取字符拼接结果不符求解
代码偏差原因排查
- 判断逻辑错位:规则要求基于元素在数组中的索引位置匹配处理方式,但现有代码错误地将数组元素(字符串)赋值给
index变量,对转换为数字的字符串做取模判断奇偶,完全没有用到循环计数器i来判断数组索引的奇偶性。 - 分支提取逻辑不匹配规则:
- 数组偶数索引的元素需提取字符串的奇数位字符(从索引1开始、步长2),这部分循环逻辑本身符合要求,但因为前置判断错位无法正确触发。
- 数组奇数索引的元素需提取字符串的偶数位字符(从索引0开始、步长2),但现有代码中该分支的循环仍然从索引1开始、步长2,和上一个分支逻辑完全一致,没有对应规则调整提取范围。
修正后实现
调整后的代码修正了判断逻辑和提取规则,运行输出和预期完全匹配:
const arr = [ '00011100', '00000001', '00101101', '11111111' ]; let enigma = ""; for(let i = 0; i < arr.length; i++){ const strItem = arr[i]; let resStr = ""; // 判断当前元素的数组索引奇偶性 if(i % 2 === 0) { // 偶数数组索引:保留字符串奇数位置字符 for(let j = 1; j < strItem.length; j += 2) { resStr += strItem[j]; } } else { // 奇数数组索引:保留字符串偶数位置字符 for(let j = 0; j < strItem.length; j += 2) { resStr += strItem[j]; } } enigma += resStr; } console.log(enigma) // 输出0110000000111111,对应预期拆分结果0110 0000 0011 1111
内容的提问来源于stack exchange,提问作者gopetoamg
相关产品推荐
相关产品推荐

