javascript - 基于 JavaScript 中的 ascii 代码从字符串中删除字符
问题描述
如果我有一个给定的字符串,使用 JavaScript,是否可以根据 ASCII 码从其中删除某些字符并返回剩余的字符串,例如从字符串中删除所有 ASCII 码 < 22 的字符?
解决方案
事实证明有很多不同的解决方案,这里有一个简短的概述(从最快到最慢排序)
一个简单的for循环
let finalString = "";
for(let i = 0; i < myString.length; i++ ) {
if(myString.charCodeAt(i) < 22) continue;
finalString += myString.charAt(i);
}
速度(用于基准测试):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]
}
速度(用于下面的基准测试):55,199 ops/s ±0.53
% 慢 33.17%
一个班轮与.join
const newString = myString.split("").filter(e => e.charCodeAt(0) >= 22).join("");
速度(用于下面的基准测试):18,745 ops/s ±0.28
% 慢 77.31%
一个班轮与.reduce
const newString = myString.split("")
.filter(e => e.charCodeAt(0) > 22)
.reduce( (acc, current) => acc += current, "");
速度(用于以下基准测试):17,781 ops/s ±0.23
% 慢 78.47%
基准
可以在这里找到基准:https ://jsbench.me/50k8zwue1p