如何从字符串中删除突出的字符?特别是在IE6中,我有这样的事情:
accentsTidy = function(s){
var r=s.toLowerCase();
r = r.replace(new RegExp(/\s/g),"");
r = r.replace(new RegExp(/[àáâãäå]/g),"a");
r = r.replace(new RegExp(/æ/g),"ae");
r = r.replace(new RegExp(/ç/g),"c");
r = r.replace(new RegExp(/[èéêë]/g),"e");
r = r.replace(new RegExp(/[ìíîï]/g),"i");
r = r.replace(new RegExp(/ñ/g),"n");
r = r.replace(new RegExp(/[òóôõö]/g),"o");
r = r.replace(new RegExp(/œ/g),"oe");
r = r.replace(new RegExp(/[ùúûü]/g),"u");
r = r.replace(new RegExp(/[ýÿ]/g),"y");
r = r.replace(new RegExp(/\W/g),"");
return r;
};
Run Code Online (Sandbox Code Playgroud)
但IE6让我烦恼,似乎它不喜欢我的正则表达式.
我正在寻找一种最简单的方法来排序由数字和文本组成的数组,以及这些数组的组合.
例如
'123asd'
'19asd'
'12345asd'
'asd123'
'asd12'
Run Code Online (Sandbox Code Playgroud)
变成
'19asd'
'123asd'
'12345asd'
'asd12'
'asd123'
Run Code Online (Sandbox Code Playgroud)
这将与我在这里提出的另一个问题的解决方案结合使用.
排序函数本身就可以工作,我需要的是一个可以说'19asd'小于'123asd'的函数.
我是用JavaScript编写的.
编辑:正如adormitu指出的那样,我正在寻找的是一种自然分类的功能
我有jQuery,但我不确定它是否有任何内置的排序助手.我可以让每个项目的一个二维数组text
,value
和selected
属性,但我不认为JavaScript的内置Array.sort()
将正常工作.
是否可以对es6地图对象的条目进行排序?
var map = new Map();
map.set('2-1', foo);
map.set('0-1', bar);
Run Code Online (Sandbox Code Playgroud)
结果是:
map.entries = {
0: {"2-1", foo },
1: {"0-1", bar }
}
Run Code Online (Sandbox Code Playgroud)
是否可以根据键输入条目?
map.entries = {
0: {"0-1", bar },
1: {"2-1", foo }
}
Run Code Online (Sandbox Code Playgroud) 我有一个混合数组,我需要按字母顺序排序,然后按数字排序
[A1, A10, A11, A12, A2, A3, A4, B10, B2, F1, F12, F3]
Run Code Online (Sandbox Code Playgroud)
我如何将其排序为:
[A1, A2, A3, A4, A10, A11, A12, B2, B10, F1, F3, F12]
Run Code Online (Sandbox Code Playgroud)
我试过了
arr.sort(function(a,b) {return a - b});
Run Code Online (Sandbox Code Playgroud)
但是只按字母顺序对其进行排序.可以使用直接JavaScript或jQuery完成吗?
通过切换javascript排序函数
myArray.sort(function (a, b) {
return a.name.localeCompare(b.name);
});
Run Code Online (Sandbox Code Playgroud)
至
myArray.sort(function (a, b) {
return (a.name < b.name ? -1 : (a.name > b.name ? 1 : 0));
});
Run Code Online (Sandbox Code Playgroud)
我能够缩短在Chrome中对~1700元素阵列进行排序的时间,从1993毫秒到5毫秒.几乎是400倍的加速.不幸的是,这是以正确排序非英语字符串为代价的.
当我尝试进行排序时,显然我无法阻止我的UI阻塞2秒.有什么我可以做的,以避免可怕的缓慢localeCompare但仍然保持对本地化字符串的支持?
假设我有一个数组
var arr = [1,5,"ahsldk",10,55,3,2,7,8,1,2,75,"abc","huds"];
Run Code Online (Sandbox Code Playgroud)
我尝试对它进行排序,我得到类似的东西......
[1, 1, 10, 2, 2, 3, 5, 55, 7, 75, 8, "abc", "ahsldk", "huds"]
Run Code Online (Sandbox Code Playgroud)
通知10是在2之前,我怎么能有更多的东西
[1,1,2,2,3,5 ..., "abc", "ahs...",...]
Run Code Online (Sandbox Code Playgroud) 我正在按照JavaScript Array sort()方法对数组进行排序.当我使用compareFunction
参数时,Internet Explorer 11未正确排序.
我有一个球员阵容与球员.这些球员有名字:
var team = [
{name:"Waldo"},
{name:"Sarah"}
];
Run Code Online (Sandbox Code Playgroud)
但是我希望按照字母顺序在体育场视频板上显示它们.所以我有一个列表,可以在DOM准备就绪时附加它们:
MYHTML
<h2>My Team after sorting</h2>
<button onclick='sortAndDisplay()'>Click here to sort by Name</button>
<ul id="myTeamAfter">
</ul>
Run Code Online (Sandbox Code Playgroud)
我的Javascript代码
function sortAndDisplay(){
$("#myTeamAfter").empty();
team.sort(function(a, b){return a.name > b.name;});
for(var i=0; i < team.length; i++){
$("#myTeamAfter").append( "<li>" + team[i].name + "</li>" );
}
}
Run Code Online (Sandbox Code Playgroud)
问题是有些俱乐部在他们的体育馆使用Internet Explorer 11,而当我使用自己的时候排序()功能compareFunction
在IE11上工作不正常,所以Waldo首先显示的比Sarah还要让粉丝感到困惑.
我创建了一个Plunker,您可以在其中重现它:
javascript sorting internet-explorer plunker internet-explorer-11
我试图通过属性对对象数组进行排序title
.这是我正在运行的代码片段,但它没有排序任何东西.数组按原样显示.PS我看了以前类似的问题.例如,这里建议并使用我正在使用的相同方法.
javascript:
function sortLibrary() {
// var library is defined, use it in your code
// use console.log(library) to output the sorted library data
console.log("inside sort");
library.sort(function(a,b){return a.title - b.title;});
console.log(library);
}
// tail starts here
var library = [
{
author: 'Bill Gates',
title: 'The Road Ahead',
libraryID: 1254
},
{
author: 'Steve Jobs',
title: 'Walter Isaacson',
libraryID: 4264
},
{
author: 'Suzanne Collins',
title: 'Mockingjay: The Final Book of The Hunger Games',
libraryID: 3245 …
Run Code Online (Sandbox Code Playgroud) 这里的重点是确切的单词。这需要适用于任意数量的排列,因此希望我的例子很清楚。
给定一串随机字母,是否可以(使用RegEx)匹配给定字符串内的确切字母数量?
因此,如果我有一个str1
包含字母的字符串(),ABZBABJDCDAZ
并且想匹配字母JDBBAA
(str2
),则我的函数应该返回,true
因为str1
包含所有正确的字母足够多的时间了。然而,如果str1
将被改变ABAJDCDA
,那么该函数将返回false
因为str2
需要str1
有至少2个字母的实例B
。
这是我到目前为止使用的范围:
const findLetters = (str1, str2) => {
const regex = new RegExp(`[${str2}]`, 'g')
const result = (str1.match(regex))
console.log(result)
}
findLetters('ABZBABJDCDAZ', 'JDBBAA')
Run Code Online (Sandbox Code Playgroud)
如您所见,它匹配正确的字母,但是匹配它们的所有实例。有什么方法可以使用RegEx做我想做的事情吗?我之所以在此关注RegEx的原因是,我需要高度优化此代码,到目前为止,我的其他函数都使用Array.every()
和indexOf()
太慢了。
注意:我的函数只需要返回一个true/false
值。
javascript ×11
sorting ×6
arrays ×3
jquery ×2
string ×2
algorithm ×1
diacritics ×1
ecmascript-6 ×1
html-select ×1
natural-sort ×1
plunker ×1
regex ×1