編寫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來實現是比較優雅的姿式。數組