4 回答
TA贡献1155条经验 获得超0个赞
您需要使用i+=2. 此外,解决方案中存在一些错误:
function splitPairs(input) {
let inputArray = input.split('');
let result = [];
if(!inputArray)
return result;
if (inputArray.length % 2 !== 0) {
for (let i = 0; i < inputArray.length-1; i+=2) {
let pair = inputArray[i] + inputArray[i+1];
result.push(pair);
}
result.push(inputArray[inputArray.length - 1] + '_');
} else {
for (let i = 0; i < inputArray.length; i += 2) {
let pair = inputArray[i] + inputArray[i+1];
result.push(pair);
}
}
return result;
}
console.log(splitPairs(""));
console.log(splitPairs("abcd"));
console.log(splitPairs("abcde"));
评论中提到的一个更简单的解决方案(一个循环)是:
function splitPairs(input) {
let inputArray = input.split('');
let result = [];
if(!inputArray)
return result;
let odd = (inputArray.length % 2 !== 0);
let len = (odd) ? inputArray.length-1 : inputArray.length;
for (let i = 0; i < len; i+=2) {
let pair = inputArray[i] + inputArray[i+1];
result.push(pair);
}
if(odd)
result.push(inputArray[inputArray.length - 1] + '_');
return result;
}
console.log(splitPairs(""));
console.log(splitPairs("abcd"));
console.log(splitPairs("abcde"));
TA贡献1789条经验 获得超10个赞
您可以使用一个(两个)衬垫
var result=str.split(/(..)/).filter(v=>v) if (result[result.length-1].length==1) result[result.length-1]+="_"
TA贡献1770条经验 获得超3个赞
你可以这样做
function splitPairs(input) {
return input.split('').map((c, i) => {
if (i % 2 !== 0) return;
if (input[i+1]) {
return input[i] + input[i+1];
}
return input[i] + '_';
}).filter(pair => pair);
}
添加回答
举报