基于 JavaScript 中的 ascii 代码从字符串中删除字符

tes*_*dtv 3 javascript

如果我有一个给定的字符串,使用 JavaScript,是否可以根据 ASCII 代码从它们中删除某些字符并返回剩余的字符串,例如从字符串中删除所有 ASCII 代码 < 22 的字符?

Wol*_*DEV 6

事实证明有很多不同的解决方案,这里是一个简短的概述(从最快到最慢排序)

一个简单的for循环

let finalString = "";
for(let i = 0; i < myString.length; i++ ) {
   if(myString.charCodeAt(i) < 22) continue;
   finalString += myString.charAt(i);
}
Run Code Online (Sandbox Code Playgroud)

速度(针对以下基准):82,600 ops/s ±1.81%

分割和过滤字符串后的for循环

const newStringArray =  myString.split("").filter(e => e.charCodeAt(0) > 22)

let finalString = ""
for(let i = 0; i < newStringArray.length; i++ ) {
   finalString += newStringArray[i]
}
Run Code Online (Sandbox Code Playgroud)

速度(对于下面的基准测试):55,199 ops/s ±0.53
% 慢 33.17%

一个衬里 .join

const newString = myString.split("").filter(e => e.charCodeAt(0) >= 22).join("");
Run Code Online (Sandbox Code Playgroud)

速度(对于下面的基准测试):18,745 ops/s ±0.28
% 慢 77.31%

一个衬里 .reduce

const newString =  myString.split("")
  .filter(e => e.charCodeAt(0) > 22)
  .reduce( (acc, current) => acc += current, "");
Run Code Online (Sandbox Code Playgroud)

速度(对于下面的基准测试):17,781 ops/s ±0.23
% 慢 78.47%

基准

基准可以在这里找到:https : //jsbench.me/50k8zwue1p
https://jsbench.me/50k8zwue1p