编写uniqueArray.jsjavascript
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;
编写单元测试java
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]); }); });
输出:shell
Test unique array function ✓ # hash table test ✓ # indexof test ✓ # double loop test 3 passing (24ms)
经过hash来实现是比较优雅的姿式。数组