相关疑难解决方法(0)

JavaScript不区分大小写的字符串比较

如何在JavaScript中执行不区分大小写的字符串比较?

javascript string

963
推荐指数
13
解决办法
71万
查看次数

在JavaScript中删除字符串中的重音符号/变音符号

如何从字符串中删除突出的字符?特别是在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让我烦恼,似乎它不喜欢我的正则表达式.

javascript diacritics

385
推荐指数
13
解决办法
22万
查看次数

Javascript:自然的字母数字字符串

我正在寻找一种最简单的方法来排序由数字和文本组成的数组,以及这些数组的组合.

例如

'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指出的那样,我正在寻找的是一种自然分类的功能

javascript sorting natural-sort

140
推荐指数
6
解决办法
8万
查看次数

按值排序Html选择选项的最有效方法是什么,同时保留当前选定的项目?

我有jQuery,但我不确定它是否有任何内置的排序助手.我可以让每个项目的一个二维数组text,valueselected属性,但我不认为JavaScript的内置Array.sort()将正常工作.

javascript arrays sorting jquery html-select

77
推荐指数
6
解决办法
9万
查看次数

是否可以对ES6地图对象进行排序?

是否可以对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)

javascript ecmascript-6

59
推荐指数
6
解决办法
9万
查看次数

对混合的字母/数字数组排序

我有一个混合数组,我需要按字母顺序排序,然后按数字排序

[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 arrays sorting jquery

55
推荐指数
5
解决办法
5万
查看次数

通过将a.localeCompare(b)切换为(a <b?-1:(a> b?1:0))进行400x排序加速

通过切换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但仍然保持对本地化字符串的支持?

javascript sorting google-chrome

36
推荐指数
3
解决办法
2万
查看次数

排序数字和字母元素的数组(自然排序)

假设我有一个数组

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 arrays sorting

11
推荐指数
5
解决办法
1万
查看次数

array.sort()在带有compareFunction的IE 11中不起作用

我正在按照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,您可以在其中重现它:

  • Firefox 33.1 - 工作!! :)
  • Chrome 39.0.2171.65 - 工作!! :)
  • Internet Explorer 11.0.9600 - 不工作:( …

javascript sorting internet-explorer plunker internet-explorer-11

9
推荐指数
1
解决办法
1万
查看次数

javascript按字符串属性排序对象数组

我试图通过属性对对象数组进行排序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)

javascript

7
推荐指数
1
解决办法
1万
查看次数

使用RegEx精确查找随机字符串中的字母

这里的重点是确切的单词。这需要适用于任意数量的排列,因此希望我的例子很清楚。

给定一串随机字母,是否可以(使用RegEx)匹配给定字符串内的确切字母数量?

因此,如果我有一个str1包含字母的字符串(),ABZBABJDCDAZ并且想匹配字母JDBBAAstr2),则我的函数应该返回,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 regex string algorithm

3
推荐指数
1
解决办法
48
查看次数