js里数组去重的函数,给解释下

天崩地裂金刚不坏 2016-07-01 10:51:11
function flatten(arr1,arr2){
var result = [];
var arr = [];

arr = arr2.reduce(function(prev, curr){
prev.push(curr);
return prev;
},arr1);

for (var i = 0; i < arr.length; i++) {
var index = arr[i];
if (result.indexOf(index) === -1) {
result.push(index);
}
}
return result;
}
flatten([1,2],[12,1,2,3,4]); // [1, 2, 12, 3, 4]

function flatten(a, r) {
if (!r) {
r = [];
}
for (var i = 0; i < a.length; i++) {
if (a[i].constructor == Array) {
flatten(a[i], r);
} else {
r.push(a[i]);
}
}
return r;
}
flatten([[1, 2],[3, 4, 5], [6, 7, 8, 9,[11,12,[12,13,[14]]]],10]);
// =>[1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 12, 13, 14, 10]
...全文
546 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
大神,能不能继续给我普及一下。各个环节,函数的意思
scscms太阳光 2016-07-01
  • 打赏
  • 举报
回复
不用这么麻烦
var str = [[1,2],[3, 4, 5],[6, 7, 8, 9,[11,12,[12,13,[14]]]],10];
var obj = {},arr = str.join(",").split(",");
for ( var i = 0;i<arr.length;){
  obj[arr[i]]?arr.splice(i,1):obj[arr[i++]] = 1
}
console.log(arr);
cq-wangyong 2016-07-01
  • 打赏
  • 举报
回复
引用 5 楼 u012418098 的回复:
[quote=引用 4 楼 qq_30282133 的回复:] obj[arr[i]]?arr.splice(i,1):obj[arr[i++]] = 1这个语句不太懂 什么意思
obj是json,array[i]就是json里面的key,这个是不能重复的,判断存在不存在这个key(array[i]),存在就获取当前下标调用splice函数从当前的下标位置删除一个(不懂可以去看看splice函数),obj不存在这个key就把这个属性加到obj里面[/quote] 感谢明白了
jio可 2016-07-01
  • 打赏
  • 举报
回复
引用 4 楼 qq_30282133 的回复:
obj[arr[i]]?arr.splice(i,1):obj[arr[i++]] = 1这个语句不太懂 什么意思
obj是json,array[i]就是json里面的key,这个是不能重复的,判断存在不存在这个key(array[i]),存在就获取当前下标调用splice函数从当前的下标位置删除一个(不懂可以去看看splice函数),obj不存在这个key就把这个属性加到obj里面
cq-wangyong 2016-07-01
  • 打赏
  • 举报
回复
obj[arr[i]]?arr.splice(i,1):obj[arr[i++]] = 1这个语句不太懂 什么意思
GJWeigege 2016-07-01
  • 打赏
  • 举报
回复
上面那个函数是数组去重处理,下面那个函数则是数组扁平化处理。 去重函数: 使用reduce()函数将两个数组合并到一个,然后在循环中,先是判断result.indexOf(index) === -1,判断index是不是在数组里,如果不存在的话,则执行代码段即添加到result数组中。最终就达到去重的目的。 扁平化函数: 将数组合并到一个数组中,并且返回扁平化的数组。语句a[i].constructor == Array判断a[i]是不是数组,是的话就递归调用该函数。否则直接添加到新数组即可。 但是该数组嵌套数组只能作为第一个参数传入,而且第二个参数可以不传或者必须传入数组才行。

87,996

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧