JS - 算法 - 数组去重 - 重载 equal 运算的数组去重
20160512 修改:避免歧义
输入:
[ [ 1, 1 ], [ 1, 1 ], [ 1, -1 ], [ 1, -1 ], [ 1, 1 ], [ 1, -1 ] ]
定义形如 [ 1, 1 ]
的元素为向量
向量相等遵从以下算法:
function vectorEquality(u, v) {
return u.length === v.length && !u.some((x, i) => x !== v[i]);
}
要求以以上算法为标准进行数组去重
即输出:
[ [ 1, 1 ], [ 1, -1 ] ]
要求:
尽量降低算法复杂度
尽量使用原生函数
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
看看Lodash的_.uniq方法,这个库可以让你写出很优雅的代码。(类似java中的guava工具库)
先做出几点假设:
1.数组里都是数字数组,没有字母或者其他复杂对象;
2.[1,-1]和 [-1,1]我们将视为同一对象,两个中只存一个
实现:
简单封装下:
如果都是简单对象 可以JSON化然后比较字符串
推荐看看Lodash库