javascript如何比较?
How does javascript do the comparison?
我有一个对象数组,每次创建新用户时都会获取新值。我需要根据人名进行一些搜索,然后对其进行一些操作,我在我的代码中实现了二进制搜索,这是我在互联网上找到的,但是搜索代码有些问题困扰着我。
对象看起来如下:
person = {
name: name,
password: password,
cartItems: '',
cartPrice: 0
}
然后我将它推送到一个数组。
二进制搜索代码如下所示:
searchValues(users, value) {
var startIndex = 0,
stopIndex = users.length,
middle = Math.floor((stopIndex + startIndex) / 2);
while(users[middle].name != value && startIndex < stopIndex){
//adjust search area
if (value < users[middle].name) {
stopIndex = middle - 1;
} else if (value > users[middle].name) {
startIndex = middle + 1;
}
//recalculate middle
middle = Math.floor((stopIndex + startIndex) / 2);
}
return (users[middle].name != value) ? -1 : middle;
}
我的问题是:JavaScript如何比较字符串值,是否转换为ascii?如果将其应用于数字,我可以理解代码,但是当涉及到字符串时,我有点困惑。
提前感谢任何愿意提供帮助的人
编辑:我忘了说我已经预先对数组进行了排序。
比较两个字符串的算法很简单:
- 比较两个字符串的第一个字符。
- 如果第一个字符串的第一个字符大于(或小于)另一个字符串的字符,则第一个字符串大于(或小于)第二个字符串。我们完成了。
- 否则,如果两个字符串的第一个字符相同,则以相同的方式比较第二个字符。
- 重复直到任一字符串结束。
- 如果两个字符串的结尾长度相同,则它们相等。否则,字符串越长越大。
参考 find more detail here
我有一个对象数组,每次创建新用户时都会获取新值。我需要根据人名进行一些搜索,然后对其进行一些操作,我在我的代码中实现了二进制搜索,这是我在互联网上找到的,但是搜索代码有些问题困扰着我。
对象看起来如下:
person = {
name: name,
password: password,
cartItems: '',
cartPrice: 0
}
然后我将它推送到一个数组。
二进制搜索代码如下所示:
searchValues(users, value) {
var startIndex = 0,
stopIndex = users.length,
middle = Math.floor((stopIndex + startIndex) / 2);
while(users[middle].name != value && startIndex < stopIndex){
//adjust search area
if (value < users[middle].name) {
stopIndex = middle - 1;
} else if (value > users[middle].name) {
startIndex = middle + 1;
}
//recalculate middle
middle = Math.floor((stopIndex + startIndex) / 2);
}
return (users[middle].name != value) ? -1 : middle;
}
我的问题是:JavaScript如何比较字符串值,是否转换为ascii?如果将其应用于数字,我可以理解代码,但是当涉及到字符串时,我有点困惑。
提前感谢任何愿意提供帮助的人
编辑:我忘了说我已经预先对数组进行了排序。
比较两个字符串的算法很简单:
- 比较两个字符串的第一个字符。
- 如果第一个字符串的第一个字符大于(或小于)另一个字符串的字符,则第一个字符串大于(或小于)第二个字符串。我们完成了。
- 否则,如果两个字符串的第一个字符相同,则以相同的方式比较第二个字符。
- 重复直到任一字符串结束。
- 如果两个字符串的结尾长度相同,则它们相等。否则,字符串越长越大。 参考 find more detail here