Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/410.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果字符串同时包含数字和字母,如何按字母顺序排序?_Javascript - Fatal编程技术网

Javascript 如果字符串同时包含数字和字母,如何按字母顺序排序?

Javascript 如果字符串同时包含数字和字母,如何按字母顺序排序?,javascript,Javascript,我的任务是获取字符串,例如: “24z6 1x23 y369 89a 900b” 现在从字符串中删除字母并返回字符串,如下所示: 89 900 123 369 246(根据字母表字母排序)您可以按空格拆分、按字母排序、仅映射数字,然后合并结果 var string=“24z6 1x23 y369 89a 900b”, result=string.split(“”).sort(函数(a,b){ 返回a.match(/\D+/g).join(“”).localeCompare(b.match(/\

我的任务是获取字符串,例如:

“24z6 1x23 y369 89a 900b”

现在从字符串中删除字母并返回字符串,如下所示:


89 900 123 369 246(根据字母表字母排序)

您可以按空格拆分、按字母排序、仅映射数字,然后合并结果

var string=“24z6 1x23 y369 89a 900b”,
result=string.split(“”).sort(函数(a,b){
返回a.match(/\D+/g).join(“”).localeCompare(b.match(/\D+/g).join(“”));
}).map(功能(a){
返回a.match(/\d/g).join(“”);
}).加入(“”);
console.log(结果);/'89 900 123 369 246'
一种方法是:

//这里我们将字母数字字符串拆分为一个字符串
//一个或多个(“+”)白色字符,使用
//带有正则表达式的String.prototype.split()
//要查找空白字符('\S'),请
//使用Array.prototype.sort()的匿名函数
//功能:
var sorted=“24z6 1x23 y369 89a 900b”。拆分(/\s+/)。排序(函数(a,b){
//答:第一个被比较的元素,
//b:正在比较的第二个元素
//在每一个字母中,我们找到第一个字母字符
//将String.prototype.match()与正则表达式一起使用
//匹配字母字符(\D);以及排序
//基于a..>b..的评估是否正确
//或者是假的。
返回a.match(/\D/)>b.match(/\D/);
//使用array.prototype.map()在排序的数组上迭代:
}).地图(功能(el){
//el是上一个数组的当前数组元素
//我们正在迭代。
//在这里,我们返回具有第一个
//使用String.prototype.replace()删除所有
//字符串中的字母字符(\D)全局(g):
返回el.替换(/\D/g');
});

console.log(已排序);//[“89”、“900”、“123”、“369”、“246”]
一种明显的方法似乎是:

var str=“24z6 1x23 y369 89a 900b”; var strArray=str.split(“”); 控制台日志(strArray);//印刷品[“24z6”、“1x23”、“y369”、“89a”、“900b”] //然后我们使用正则表达式按字母顺序对数组进行排序 strArray.sort(函数(a,b){ 返回a.match(/\D/)>b.match(/\D/) }); 控制台日志(strArray);//印刷品[“89a”、“900b”、“1x23”、“y369”、“24z6”] //接下来,我们从排序数组中删除字母表 var结果=strArray.map(函数(每个){ 返回每个。替换(/\D/g'); }); console.log(结果);//印刷品[“89”、“900”、“123”、“369”、“246”] //最后用空格连接数组以获得所需的输出 var输出=结果。连接(“”);
console.log(输出);//打印89 900 123 369 246应该是一个问题:1)在空格上拆分字符串,2)从每个子字符串中提取字母,将其映射到它所表示的数字,3)排序,4)删除字母,5)打印结果;我忘了重新加入阵列。哦,好吧;我对否决票很好奇……这不是加入,而是顺序。@Nina:我看不出你自己的顺序和我自己解决方案的顺序有什么不同。不过,这可能是我在工作中使用的Chrome的过时版本。奇怪的/我使用edge,我看到了
246 123 369 89 900
,但你是对的,在chrome上,正如在ff上一样,它是
89 900 123 369 246
,因此它似乎依赖于浏览器。我想,这是你使用的排序。