您能给我一些答案吗?
代码:
数字1:
function reverseString(str){
return str.split('').reverse().join('');
}
数字2:
function reverseString(str){
if(str.length == 1) return str;
return str[str.length - 1] + (reverseString(str.slice(0,str.length - 1)));
}
非常感谢您!
答案 0 :(得分:0)
基于此jsperf,在带有Windows 10的Chrome 73上进行测试时,您的第一个函数(第1个)的执行速度似乎更快。值得注意的是,此处计算出的差异可以忽略不计。
请注意,您可以使用jsperf之类的网站来创建自己的基准。
答案 1 :(得分:0)
递归的似乎有点慢。我建议第三个选择:简单的 List<String> imeiList = mongoTemplate.query(Device.class)
.distinct("imei")
.as(String.class)
.all();
循环和字符串连接。
注意:递归解决方案的缺点是,当字符串很长时,它可能会遇到堆栈溢出。
您可以使用Benchmark.js来衡量性能:
for
function reverseString1(str) {
return str.split('').reverse().join('');
}
function reverseString2(str) {
if (str.length == 1) return str;
return str[str.length - 1] + (reverseString2(str.slice(0,str.length - 1)));
}
function reverseString3(str) {
let result = "";
for (let i = str.length; i--;) result += str[i];
return result;
}
// An input string of 200 characters:
let str = "asirjsmpfuenndlsuegi".repeat(20);
console.log("Tests...");
const suite = new Benchmark.Suite("reverse string");
suite.add("split&join", () => reverseString1(str))
.add(" recursive", () => reverseString2(str))
.add(" for-loop", () => reverseString3(str))
.on('cycle', (event) => console.log(String(event.target)))
.on('complete', () =>
console.log('Fastest is: ' + suite.filter('fastest').map('name')))
.run({ 'async': true });