我想使用javascript交替合并两个变量和stings。什么算法可以完成这项任务?
例如:
var a = "abc"
var b = "def"
result = "adbecf"
答案 0 :(得分:1)
执行此操作的最佳方法是执行以下算法:
这可以通过以下代码实现:
.electron-vue/webpack.web.config.js
或更多Codegolf类型的答案:
.electron-vue/webpack.main.config.js
答案 1 :(得分:1)
我会使用Array.from从字符串生成一个数组(具有unicode意识)。
之后,只需在每个字符串中添加一个字母,直到每个字符串都没有字母。请注意,此解决方案会合并长度不均匀的字符串(.electron-vue/webpack.renderer.config.js
+ function merge(s, t) {
return s.split("")
.map(function(v,i) {
return t[i] ? v + t[i] : v
})
.join("")
}
= s=>t=>[...s].map((v,i)=>t[i]?v+t[i]:v).join``
)
aa
答案 2 :(得分:1)
简单的方法是定义最长的字符串并分配给 for循环。另外,您还必须为长度不均匀的字符串添加 if语句,因为您想忽略较短字符串的 undefined 值。
function mergeStrings(s1, s2){
var n = s1.length;
if(s1.length < s2.length){
n = s2.length;
}
var string = '';
for(var i = 0; i < n; i++){
if(s1[i]){
string += s1[i];
}
if(s2[i]){
string += s2[i];
}
}
return string;
}
console.log(mergeStrings('ab','lmnap'));
console.log(mergeStrings('abc','def'));
答案 3 :(得分:0)
如果你的字符串长度相同,这将有效。如果不是,你将不得不在循环后附加剩余的较长字符串。您可以在循环外声明i
,然后使用substr()
来获取较长字符串的结尾。
const a = "abc"
const b = "def"
var res = "";
for (var i = 0;i < Math.min(a.length, b.length); i++) {
res += a.charAt(i) + b.charAt(i)
}
console.log(res)
答案 4 :(得分:0)
正则表达式或数组处理和加入完成工作:
include.lowest=TRUE/FALSE
答案 5 :(得分:0)
您可以使用数组扩展和缩小来解决此问题。将每个字符串拆分为一个数组,然后合并为一个数组,然后使用reduce生成合并后的字符串。
function mergeStrings(a, b) {
const mergedValues = [
...a.split(''),
...b.split('')
].reduce((values, currentValue) => {
if (!values.includes(currentValue)) {
values.push(currentValue);
}
return values;
}, []);
return Array.from(mergedValues).join('');
}