【发布时间】:2019-04-22 11:40:11
【问题描述】:
这两个代码块有什么不同,结果是一样的。任何人都可以帮助我并解释其中的区别吗?
const sortPeople = people.sort((first, last) => {
const [firstName, lastName] = first.split(",");
first.lastName > last.lastName ? 1 : -1;
});
console.log(sortPeople);
第二个代码
const alpha = people.sort((lastOne, nextOne) => {
const [aLast, aFirst] = lastOne.split(', ');
const [bLast, bFirst] = nextOne.split(', ');
return aLast > bLast ? 1 : -1;
});
console.log(alpha);
【问题讨论】:
-
“这两个过滤器有什么不同?”它们都不是过滤器。两者都是错误的(如果目标是正确排序)。
-
你从哪里得到这些的?第一个有点荒谬(并且两者都有问题),因为它似乎试图对包含字符串和对象的数组进行排序
lastName属性。 (您可以拥有一个对象数组,其中包含一个split方法和一个lastName属性,但是...)我们需要很多更多上下文和更清晰,比“有什么不同”更明确的问题,以便为您提供帮助。 -
目的是按姓氏字母顺序对人进行排序,
-
@T.J. Crowder 也许您可以尝试底部的示例代码?万一你错过了
-
@hoangdv - 也许,如果
sort的实现不会因为回调获取相等条目的返回值错误这一事实而感到困惑。 :-) 第二个的return应该是return aLast.localeCompare(bLast);或至少return aLast == bLast ? 0 : aLast > bLast ? 1 : -1;。
标签: javascript filter