我想缠绕(?)两个字符串,例如:
string A = 'HELLO WORLD!'
string B = '66666666666666666666' //twenty 6's
output = 'H6E6L6L6O6 6W6O6R6L6D6!666666666'
或例如:
string A = 'SOME REALLY REALLY LONG STRING'
string B = '66666666666666666666' //twenty 6's
output = 'S6O6M6E6 6R6E6A6L6L6Y6 6R6E6A6L6L6Y6 6L6ONG STRING'
是否有一个内置函数可以执行这样的操作?
答案 0 :(得分:1)
也许是地图?
function joinIt(strs) {
var strA = strs[0].length <= strs[1].length?strs[0]:strs[1];
var strB = strs[1].length <= strs[0].length?strs[0]:strs[1];
return strB.split("").map(function(b, i) {
var a = strA.charAt(i);
return b + a;
}).join("")
}
console.log(
joinIt(['HELLO WORLD!', '66666666666666666666'])
)
console.log(
joinIt(['SOME REALLY REALLY LONG STRING','66666666666666666666'])
)
答案 1 :(得分:1)
没有内置功能,但是很容易做到:
var a = 'some long string';
var b = '2292929292302720709970709710';
var str1 = a.length < b.length ? b:a;
var str2 = a.length < b.length ? a:b;
var result = [...str1].reduce((acc, char, index) => {
acc += char + (str2[index] || '');
return acc;
}, '');
console.log(result);
答案 2 :(得分:1)
没有本地JS函数,但是它是单行函数。
var stringA = 'SOME REALLY REALLY LONG STRING';
var stringB = '66666666666666666666'; //twenty 6's //twenty 6's
var stringC = '';
for (var i = 0; i < (Math.max(stringA.length, stringB.length)); i++) {
stringC += (stringA[i] ? (stringB[i] ? stringA[i] + stringB[i] : stringA[i]) : (stringB[i] ? stringB[i] : ''));
}
console.log('stringC: ', stringC);
答案 3 :(得分:1)
使用replace()
可以将匹配项传递给回调函数,然后使用shift()
在每次我们有匹配项时获取第二个字符串的第一个元素(变成数组)。最后,您可以使用+ arr.join("")
添加其余元素:
function addSomethig(str, str2){
var arr = str2.split("");
str = str.replace(/[A-Z ]/gi, (m)=>(arr.length>0)?m+arr.shift():m) + arr.join("");
return str;
}
console.log(addSomethig('SOME REALLY REALLY LONG STRING', '66666666666666666666'));
console.log(addSomethig('HELLO WORLD!', '66666666666666666666'));
console.log(addSomethig('SOME REALLY REALLY LONG STRING', 'anything, like: 789798798798798'))
答案 4 :(得分:1)
function interleave(str1, str2){
let outstr = "";
for(let i = 0; i < Math.max(str1.length, str2.length);i++){
if(i < str1.length){
outstr += str1[i];
}
if(i < str2.length){
outstr += str2[i];
}
}
return outstr;
}
console.log(interleave('aaaaa','bbbbbbbbbbbb'));