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 ] ]
要求:
尽量降低算法复杂度
尽量使用原生函数
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
看看Lodash的_.uniq方法,这个库可以让你写出很优雅的代码。(类似java中的guava工具库)
先做出几点假设:
1.数组里都是数字数组,没有字母或者其他复杂对象;
2.[1,-1]和 [-1,1]我们将视为同一对象,两个中只存一个
实现:
简单封装下:
如果都是简单对象 可以JSON化然后比较字符串
推荐看看Lodash库