相关疑难解决方法(0)

在JavaScript中比较字符串的最佳方法?

我正在尝试优化一个在JavaScript中对字符串进行二进制搜索的函数.

二进制搜索要求您知道密钥是==枢轴还是<枢轴.

但这需要在JavaScript中进行两次字符串比较,这与C具有strcmp()返回三个值(-1, 0, +1)(小于,等于,大于)的函数的类似语言不同.

JavaScript中是否存在这样的本机函数,它可以返回三元值,以便在二进制搜索的每次迭代中只需要进行一次比较?

javascript string optimization comparison binary-search

378
推荐指数
3
解决办法
68万
查看次数

通过将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万
查看次数

在JS中,你能依靠比较字符串与">"和"<"运算符吗?

我正在构建一个抽象表,表中的每一列都可以包含所有数字或所有字符串.通过单击列标题可以对每列进行排序.

目前我正在使用JS本机排序并传递compareFunction:

const rows = [
  {name: 'Adam', age: 27, rank: 3},
  {name: 'Zeek', age: 31, rank: 1},
  {name: 'Nancy', age: 45, rank: 4},
  {name: 'Gramps', age: 102, rank: 2},
]

const compareFn = (x, y) => {
  const sortDirValue = this.state.sortDirection === 'DESC' ? 1 : -1
  if (x[this.state.sortBy] === y[this.state.sortBy]) return 0
  return x[this.state.sortBy] < y[this.state.sortBy] ? sortDirValue : -sortDirValue
}

this.state = {
  sortBy: 'name',
  sortDirection: 'ASC'
}
rows.sort(compareFn)
console.log('---- Sorted …
Run Code Online (Sandbox Code Playgroud)

javascript

13
推荐指数
1
解决办法
398
查看次数

我可以使用三等号进行JavaScript字符串比较吗?

我知道这是一个非常基本的问题,但我无法理解Google和Stack Overflow的情况。

在这里这里查看了如何在JavaScript中比较字符串。他们都没有===在答案中提到三等号(),并说最好使用自己的函数(str1 < str2 ? -1 : str1 > str2)。

但是,通过对===Stack Overflow(此处此处)的解释,答案包含字符串比较。从我在那些答案中看到的结果来看,===它可以用于字符串比较,那么为什么不将其包含在字符串比较答案中呢?

我只是想扩展我的JavaScript知识。

感谢您的见解!

javascript string comparison triple-equals

8
推荐指数
1
解决办法
8093
查看次数

根据其属性值对JSON数组进行排序

这是我获得的JSON数组:

    [
        {
            "Name" : "Sachin",
            "Age"  : "41",
            "Team" : "Mumbai"
        },
        {
            "Name" : "Dravid",
            "Age"  : "42",
            "Team" : "Rajasthan"
        },
        {
            "Name" : "Yuvraj",
            "Age"  : "31",
            "Team" : "Bangalore"
        }
    ]
Run Code Online (Sandbox Code Playgroud)

但是我需要通过"Age"属性对这个JSON数组desc进行排序.我想要的JSON数组应如下所示:

 [
    {
        "Name" : "Dravid",
        "Age"  : "42",
        "Team" : "Rajasthan"
    },
    {
        "Name" : "Sachin",
        "Age"  : "41",
        "Team" : "Mumbai"
    },
    {
        "Name" : "Yuvraj",
        "Age"  : "31",
        "Team" : "Bangalore"
    }
]
Run Code Online (Sandbox Code Playgroud)

怎么做到这一点?

javascript arrays sorting json node.js

2
推荐指数
1
解决办法
547
查看次数