Rumah > Soal Jawab > teks badan
P粉2447306252023-08-28 15:08:49
Saya kecewa kerana tiada siapa dalam jawapan yang lain menjelaskan "cara terbaik" bermaksud "cara terpantas"...
Saya menarik dua contoh daripada di sini dan menambah str。 join()
和 str.reduce()
daripada jawapan nishanths di atas. Berikut ialah keputusan saya pada Firefox 77.0.1 di Linux.
Nota: Saya dapati semasa menguji ini bahawa jika saya meletakkan str = str.concat()
和 str +=
secara langsung sebelum atau selepas satu sama lain, yang kedua sentiasa menunjukkan prestasi yang lebih baik...jadi saya menjalankan ujian ini secara individu dan mengulas tentang Keputusan yang lain...
Walaupun begitu , jika saya menjalankannya semula, kelajuannya berubah banyak , jadi saya mengukur setiap satu 3 kali.
1 aksara pada satu masa:
str = str.concat()
:841、439、956 毫秒 / 1e7 concat() 的
............str +=
:949、1130、664 毫秒 / 1e7 +='s
.......[].join()
: [] 中有 3350, 2911, 3522 ms / 1e7 个字符
......[].reduce()
:[] 中的 3954、4228、4547 毫秒 / 1e7 个字符
26 rentetan pada satu masa:
str = str.concat()
:444、744、479 毫秒 / 1e7 concat() 的
............str +=
:1037, 473, 875 毫秒 / 1e7 +='s
........[].join()
: 2693, 3394, 3457 ms / 1e7 字符串在 []
......[].reduce()
:[] 中的 2782、2770、4520 ms / 1e7 字符串
Jadi, sama ada menambahkan 1 aksara pada satu masa atau 26 rentetan pada satu masa:
str = str.concat()
和 str +=
[].reduce()
,然后是 [].join()
Kod saya, mudah dijalankan dalam konsol penyemak imbas:
{ console.clear(); let concatMe = 'a'; //let concatMe = 'abcdefghijklmnopqrstuvwxyz'; //[].join() { s = performance.now(); let str = '', sArr = []; for (let i = 1e7; i > 0; --i) { sArr[i] = concatMe; } str = sArr.join(''); e = performance.now(); console.log(e - s); console.log('[].join(): ' + str); } //str += { s = performance.now(); let str = ''; for (let i = 1e7; i > 0; --i) { str += concatMe; } e = performance.now(); console.log(e - s); console.log('str +=: ' + str); } //[].reduce() { s = performance.now(); let str = '', sArr = []; for (let i = 1e7; i > 0; --i) { sArr[i] = concatMe; } str = sArr.reduce(function(pre, next) { return pre + next; }); e = performance.now(); console.log(e - s); console.log('[].reduce(): ' + str); } //str = str.concat() { s = performance.now(); let str = ''; for (let i = 1e7; i > 0; --i) { str = str.concat(concatMe); } e = performance.now(); console.log(e - s); console.log('str = str.concat(): ' + str); } 'Done'; }
P粉4125335252023-08-28 14:12:16
Dengan ES6, anda boleh menggunakan
Rentetan templat: p>
var username = 'craig'; console.log(`hello ${username}`);
ES5 dan versi ke bawah:
Gunakan +
operator
var username = 'craig'; var joined = 'hello ' + username;
rentetan concat (..)
var username = 'craig'; var joined = 'hello '.concat(username);
Atau, gunakan kaedah tatasusunan:
var username = 'craig'; var joined = ['hello', username].join(' ');
Atau lebih eksotik, < code>kurangkan(..) digabungkan dengan mana-mana di atas:
var a = ['hello', 'world', 'and', 'the', 'milky', 'way']; var b = a.reduce(function(pre, next) { return pre + ' ' + next; }); console.log(b); // hello world and the milky way