Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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 为什么Array.prototype.sort()不';在Chrome开发工具中不工作?_Javascript_Arrays_Google Chrome_Sorting_Ecmascript 6 - Fatal编程技术网

Javascript 为什么Array.prototype.sort()不';在Chrome开发工具中不工作?

Javascript 为什么Array.prototype.sort()不';在Chrome开发工具中不工作?,javascript,arrays,google-chrome,sorting,ecmascript-6,Javascript,Arrays,Google Chrome,Sorting,Ecmascript 6,const arr=[{name:'Suzanne'},{name:'Jim'},{name:'Trevor'},{name:'Amanda'}]; arr.sort((a,b)=>a.name>b.name)调用.sort()必须返回一个数字,而不是布尔值。返回值应为: 如果第一个元素在第二个元素之前,则为负数 如果第一个元素在第二个元素之后,则为正数 如果两个元素的顺序相同,则为零 对于字符串,可以使用.localeCompare()方法: arr.sort((a,b) => a.

const arr=[{name:'Suzanne'},{name:'Jim'},{name:'Trevor'},{name:'Amanda'}];
arr.sort((a,b)=>a.name>b.name)
调用
.sort()
必须返回一个数字,而不是布尔值。返回值应为:

  • 如果第一个元素在第二个元素之前,则为负数
  • 如果第一个元素在第二个元素之后,则为正数
  • 如果两个元素的顺序相同,则为零
对于字符串,可以使用
.localeCompare()
方法:

arr.sort((a,b) => a.name.localeCompare(b.name));
.sort()
回调必须返回一个数字,而不是布尔值。返回值应为:

  • 如果第一个元素在第二个元素之前,则为负数
  • 如果第一个元素在第二个元素之后,则为正数
  • 如果两个元素的顺序相同,则为零
对于字符串,可以使用
.localeCompare()
方法:

arr.sort((a,b) => a.name.localeCompare(b.name));

当我在node(v8.4.0)和safari开发工具(console)中使用代码时,它工作得很好。
这很有趣,因为排序方法需要一个返回数字的回调,而上面的表达式返回的是布尔值。代码不正确,或者至少,您的代码不符合您的期望。谢谢,briosheje。我认为sort方法的回调可以返回布尔值。但这是错误的。Safari控制台和节点很奇怪。。。;(
当我使用node(v8.4.0)和safari开发工具(console)中的代码时),它工作得很好。
这很有趣,因为排序方法要求回调返回一个数字,而上面的表达式返回的是一个布尔值。代码不正确,或者,至少,您的代码不应该是您所期望的。谢谢,briosheje。我原以为排序方法的回调可以返回布尔值。但这是错误的。Safari控制台和node都很奇怪…;(谢谢!但这意味着node和safari控制台是错误的(或者不符合ECMAScript标准)。因为代码是错误的,但它们工作得很好:(@eje well是“错误的”sort comparator有时可以工作;这取决于排序算法的非常具体的细节。多亏了你,我了解了一些新的东西。谢谢!但这意味着node和safari控制台是错误的(或者不符合ECMAScript标准)。因为代码是错误的,但它们工作得很好。(@eje well a“错误的”排序比较器有时可以工作;它取决于排序算法的非常具体的细节。多亏了你的尖锐,我了解了一些新的东西。