摘要:编写双重循环去重当出现相同的元素时,删除重复的元素哈希表形式查询对象是否存在当前元素属性借助方法查询空数组里面是否已经存在这个值,不存在则推入编写单元测试输出通过来实现是比较优雅的姿势。
编写uniqueArray.js
var Unique = { /** * 双重循环去重 * @param arr * @returns {*} */ dbloop: function (arr) { var i, j, res = []; for (i = 0; i < arr.length; i++) { for (j = i + 1; j < arr.length; j++) { if (arr[i] === arr[j]) { arr.splice(j--, 1);//当出现相同的元素时,删除重复的元素 } } } return arr; }, /** * 哈希表形式 * @param arr * @returns {Array} */ hash: function (arr) { var i, hash = {}, res = []; //查询hash对象是否存在当前元素(属性) for (i = 0; i < arr.length; i++) { if (!hash[arr[i]]) { res.push(arr[i]); hash[arr[i]] = true; } } return res; }, /** * 借助indexOf方法 * @param arr * @returns {Array} */ indexOf: function (arr) { var i, res = []; //查询空数组里面是否已经存在这个值,不存在则推入 for (i = 0; i < arr.length; i++) { if (res.indexOf(arr[i]) === -1) { res.push(arr[i]); console.log(arr[i]); } } return res; } }; module.exports = Unique;
编写单元测试
var expect = require("chai").expect, unique = require("../uniqueArray"); describe("Test unique array function", function () { var arr = [1, 1, 2, 4, 3, 4, 4, 5, 1]; var res = [1, 2, 4, 3, 5]; it("# hash table test", function () { expect(unique.hash(arr)).to.be.deep.equal(res); }); it("# indexof test", function () { expect(unique.hash(arr)).to.be.deep.equal(res); }); it("# double loop test", function () { expect(unique.dbloop(arr)).to.be.deep.equal([2, 3, 4, 5, 1]); }); });
输出:
Test unique array function ✓ # hash table test ✓ # indexof test ✓ # double loop test 3 passing (24ms)
通过hash来实现是比较优雅的姿势。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/79082.html
摘要:方式使用获取并删除删除数组的第一个元素,判断这个元素是否还存在于数组中,如果存在则说明这个元素的是重复的如果不存在,进行操作方式建立一个哈希表,通过对象属性查询去除重复元素方式思路和方式类似,但是简洁很多来源个人博客 方式1:使用shift()获取并删除删除数组的第一个元素,判断这个元素是否还存在于数组中,如果存在则说明这个元素的是重复的;如果不存在,进行push()操作 functi...
摘要:此专栏文章是对力扣上算法题目各种方法的总结和归纳整理出最重要的思路和知识重点并以思维导图形式呈现当然也会加上我对导图的详解目的是为了更方便快捷的记忆和回忆算法重点不用每次都重复看题解毕竟算法不是做了一遍就能完全记住的所 ...
摘要:三种方法利用判断新数组中实际上也是使用的类似的传入数组如果当前数组的第已经保存进了临时数组,那么跳过,否则把当前项到临时数组里面利用判断旧数组结果数组如果当前数组的第项在当前数组中第一次出现的位置不是,那么表示第项是重复的,忽略掉。 三种方法 利用indexOf判断新数组 underscore.js中实际上也是使用的类似的indexOf //传入数组 functio...
摘要:数组去重的方法第一种方法方法可以将结构转为数组这就是提供了一种数据去重的方法第二种方法运用扩展运算符提供了一种更便捷的去重方法第三种方法这是一种原生的去重方法,借助一个空数组来实现去重,便于理解底层原理函数带有参数第四种方法同上函数不带参 数组去重的方法 第一种方法 Array.from方法可以将Set结构转为数组 let items = new Set([1, 2, 3, 4, 5]...
阅读 2655·2021-11-23 09:51
阅读 1644·2021-11-22 13:54
阅读 2781·2021-11-18 10:02
阅读 936·2021-08-16 10:57
阅读 3553·2021-08-03 14:03
阅读 1872·2019-08-30 15:54
阅读 3527·2019-08-23 14:39
阅读 598·2019-08-23 14:26