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“错误的”排序比较器有时可以工作;它取决于排序算法的非常具体的细节。多亏了你的尖锐,我了解了一些新的东西。