首页 > 解决方案 > 基于 JavaScript 中的 ascii 代码从字符串中删除字符

问题描述

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

标签: javascript

解决方案


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

一个简单的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
https://jsbench.me/50k8zwue1p


推荐阅读