掉过的坑总得自己填起来

1. sort()

楼主最近在刷leetcode,写threeSum的时候需要对数组进行排序。但是出来的结果始终不对。调试了以后才发现sort()函数与想象中不太一样:

sort()方法:如果省略参数,数组项会**先根据toString()函数将其值转换成字符串**在进行比较,是按UNICODE进行比较的,然后根据这个进行排序。

因此会导致下面的情况产生。

![](http://p1.bqimg.com/567571/824ec9546b15fd75.png)

为了避免这种情况,需要自定义比较函数

1
2
let arr = [-4,-2,-1];
arr.sort((a,b)=> a-b)

2. set of array of array

通常我们可以用set来unique一个数组,类似于

1
[...new Set([1,2,2,3])] or Array.from(new Set([1,2,2,3]))

但是对于array of array就比较尴尬了..因为js里面数组是对象,两个数组的引用是不一样的。所以当你输入这样的值

1
Array.from(new Set([[1],[1]]))

其实是不会起到任何作用的。
暂时的搓搓的方法,只能之前用json.stringify处理一遍。

1
2
3
resultSet.add(JSON.stringify([1,2]));
result = Array.from(resultSet).map(a=> JSON.parse(a));