gpt4 book ai didi

javascript - 基于 startsWith() 和 endsWith() 连接字符串

转载 作者:行者123 更新时间:2023-11-29 23:24:04 25 4
gpt4 key购买 nike

我有字符串 var str1 = 'foobarbaz'var str2 = 'bazfoo'

我想根据重叠的开始和结束字符加入它们。我要查找的结果是 'foobarbazfoo'

我目前的做法是:

function merge(str1, str2) {
var size = Math.min(str1.length, str2.length);
index = 0;
for (var i = 0; i < size; i++) {

var ends = str1.substr(str1.length - i);
var starts = str2.substr(0, i);

if (ends === starts) {
index = i;
}
}

if (index === 0) {
throw 'Strings do not overlap';
} else {
return str1 + str2.substr(index, str2.length);
}
}

我想知道,是否有更优雅、更高效的方法?

最佳答案

我认为将函数添加到Stringprototype 并使用startsWith() 是个好主意和 Conditional (ternary) Operator这是我能想到的:

String.prototype.merge = function(str) {
let match;
for (let i = this.length; i >= 0; i--)
(str.startsWith(this.slice(i))) && (match = this.slice(i));

return this.slice(0, this.indexOf(match)) + str.slice(str.indexOf(match), str.length)
}

let merged = 'foobarbaz'.merge('bazfoo')

console.log(merged);

就速度而言,这两种方法是相同的(使用 Performance.now() 测试执行时间)

但更少的行和一个 declarative rather than imperative代码。

请随意选择 slicesubstring ( slice vs substring )

关于javascript - 基于 startsWith() 和 endsWith() 连接字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49785364/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com