数组去重 - 创造 101 种方法 (上)

原创 uptown 教程 前端面试题 138阅读 16 天前 举报

   在我们面试的过程中,数组去重,应该算翻牌率极高的题了,结合网上和自己的尝试,写了这个测试,整体涉及的知识点极广且曲径通幽。
总结起来,有 101 种方法,999 朵玫瑰 1001 夜,哈哈,我自己都不信,要不我先写 11 种,接下的 90 种各种看官泼墨挥毫自由发挥!其实,倒也远不止11种方法,只是在下才疏学浅,只能抛砖引玉,暖暖场子。
你如果还有更棒的想法,欢迎留言开脑洞,毕竟,你美,说什么都对!
    在阅读本文前,建议先去看我写的《十种方法解决--- 1-100累加和》,其实数组去重跟这个思路很相似!

1、indexOf

利用 数组如果不存在该项,indexOf = -1

结果:["大唐", 0, false, "false", null, "盛世", "1", true, 1, 2, 3, 4, 5, 6, "6", 7, 8, 9, 10, undefined]

2、数组索引

数组每一项只有唯一的索引值。
这个方法有个缺点,就是结果会把所有值,转换成字符串类型

结果:["0", "1", "10", "2", "3", "4", "5", "6", "7", "8", "9", "false", "null", "true", "undefined", "大唐", "盛世"]

3、对象属性

对象内属性名只能存在唯一的一个,同样属性名,后面会覆盖前面的属性值
如:var obj = {a:1,b:2,a:3};  console.log(obj.a); //结果:3
缺点同例2,会转换成字符串类型

结果:["0", "1", "10", "2", "3", "4", "5", "6", "7", "8", "9", "false", "null", "true", "undefined", "大唐", "盛世"]

4、for 循环

利用两个 for 遍历出的值,进行对比,删除重复项
这一句很关键:len = ary.length; 因为 数组的长度在不断变化中。

结果:[0, "1", 1, 10, 2, 3, 4, 5, "6", 6, 7, 8, 9, false, "false", null, true, "大唐", "盛世", undefined]

5、reduce

结果:[0, "1", 1, 10, 2, 3, 4, 5, "6", 6, 7, 8, 9, false, "false", null, true, "大唐", "盛世", undefined]

《数组去重 - 创造 101 种方法 (下)》

评论 ( 0 )
最新评论
暂无评论

赶紧努力消灭 0 回复