💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
``` <script> /* * 方案二:对象键值对的方式 * 1.只有一个循环,所以性能很好 * 2.如果数组中出现对象则存在问题(因为对象的属性名不能是对象,遇到会转换为字符串);如果数组中存在数字10和字符串'10',则也会认为是重复的(对象中的属性名是数字和字符串没啥区别);数组中的值如果是undefined可能也会出现问题.... */ /* let arr = [1, 2, 3, 1, 1, 4, 2, 3]; let obj = {}; for (let i = 0; i < arr.length; i++) { // 把每一次循环得到的当前项,作为对象的属性名和属性值存储进去 let item = arr[i]; if (obj[item] !== undefined) { // 证明对象中有这个属性(也就是之前存储过,数组中之前就有这个值),当前值是重复的,我们需要把当前这项的值删掉即可 arr[i] = arr[arr.length - 1]; arr.length--; i--; continue; } obj[item] = item; } console.log(arr); */ </script> <script> /* ES6中没有提供现成的去重办法,但是提供了一些去重的方式 :Set数据结构*/ let obj = { y: 200 }; let arr = [obj, 1, 2, 3, 1, obj, 1, 4, 2, 3, '3', { x: 100 }, { x: 100 }]; arr = Array.from(new Set(arr)); console.log(arr); </script> ``` ![](https://img.kancloud.cn/41/0f/410f13868bc6f166b199d0fdd5129543_2162x1010.png) ![](https://img.kancloud.cn/e0/73/e073f8f9410362c940addd947e6ca077_547x347.png)