刚刚遇到一个问题: 在使用AngularJS的ng-repeat指令时,遇到了数据重复出现的问题。 可能有的人会想到,ng-repeat迭代时,遇到重复的数据不是会报错么? 当然了,如果你迭代的是数组,而且数据类型时字符串或者数字时,ng-repeat指令就会自动报错。而且解决办法也很简单, 加个track by $index就能解决。 而我的问题是,在迭代对象时,因为对象中有重复的数据,而我需要的是重复的数据只显示一条,也就是去重。因为迭代的是对象,...
中午和同事吃饭,席间讨论到数组去重这一问题 我立刻就分享了我常用的一个去重方法,随即被老大指出这个方法效率不高 回家后我自己测试了一下,发现那个方法确实很慢 于是就有了这一次的高性能数组去重研究 一、测试模版 数组去重是一个老生常谈的问题,网上流传着有各种各样的解法 为了测试这些解法的性能,我写了一个测试模版,用来计算数组去重的耗时 // distinct.js let arr1 = Array.from(new Array(100000), (x, index)=>{re...
本文实例讲述了JavaScript使用indexOf()实现数组去重的方法。分享给大家供大家参考,具体如下: 数组去重方法有多中,这里列举出自己认为比较容易理解的方法. 思路: 1. 创建一个新的空数组,用来存放去重后的新数组.2. 利用for循环循环遍历需要去重的数组.3. 利用indexOf()方法查询遍历出的数组在新数组中是否出现,如果出现:则继续遍历数组,如未出现:则利用push方法添加到新数组中.4. 原数组循环遍历完成后,组建一个已经去除重复的新...
本文实例讲述了JavaScript实现数组全排列、去重及求最大值算法。分享给大家供大家参考,具体如下: 1、全排列(递归) function permutation(arr){if (arr.length == 1)return arr;else if (arr.length == 2)return [[arr[0],arr[1]],[arr[1],arr[0]]];else {var temp = [];for (var i = 0; i < arr.length; i++) {var save = arr[i];arr.splice(i, 1);//取出arr[i]var res = permutation(arr);//递归排列arr[0],arr[1],...,arr[i-...
本文实例讲述了JavaScript基于对象方法实现数组去重及排序操作。分享给大家供大家参考,具体如下: <script>//用对象方法实现数组去重Array.prototype.unique = function() {var newArr = [];for (var i = 0; i < this.length; i++) {if(newArr.indexOf(this[i]) == -1){newArr.push(this[i]);}}return newArr;};var jarr = [1,2,4,3,45,6,33,4,2];var unq = jarr.unique();console.log(unq);//对结果排序 sortunq.sort(function c...
对于数组去重我们有n种方法可以实现。 es5实现方法 for循环+indexOf function unique(arr) {var uniqueArr = [],len = arr.lengthfor (var i = 0; i < len; i++) {if (uniqueArr.indexOf(arr[i]) == -1) {uniqueArr.push(arr[i])}}return uniqueArr}var arr = [1, 2, 3, 1, 5, "1"]var uniqueArr = unique(arr)console.log(arr) //[1, 2, 3, 1, 5, "1"]console.log(uniqueArr) //[ 1, 2, 3, 5, 1 ]排序后去重function unique(arr...
本文实例讲述了JS数组去重常用方法。分享给大家供大家参考,具体如下: js数组去重,老生长谈,今天对其进行一番归纳,总结出来4种方法 贴入代码前 ,先对浏览器Array对象进行支持indexOf和forEach的polyfill Array.prototype.indexOf = Array.prototype.indexOf || function(item) {for (var i = 0, j = this.length; i < j; i++) {if (this[i] === item) {return i;}}return -1; } Array.prototype.forEach = Array.prototype.fo...
本文实例讲述了JS实现常见的查找、排序、去重算法。分享给大家供大家参考,具体如下: 今天总结了下排序简单的算法 【自定义排序】 先寻找一个最小的数,然后依次那这个数和数组中其他数字比较,如果发现比这个数字小的数就把这两个数调换位置,然后再继续寻找下一个最小的数字进行下一轮比较 var arr = [31, 6, 19, 8, 2, 3]; function findMin(start, arr) {var iMin = arr[start];var iMinIndex = start;for (var i = start + 1...
本文实例总结了JavaScript数组去重算法。分享给大家供大家参考,具体如下: 测试用例:arr = ["1",3,"1",1,4,5,1,"2",5,1,{"name":"li","age":20},2,4,3,{"name":"li","age":20},""];方法一:借助于临时数组与indexOf , 算法复杂度为:O(n^2) function unique1(arr){var temp = [];for(var i=0; i<arr.length; i++){if(temp.indexOf(arr[i]) == -1){temp.push(arr[i]);}}return temp; }测试结果:unique1(arr) : ["1", 3, 1, 4, 5,...
本文实例讲述了JS实现字符串去重及数组去重的方法。分享给大家供大家参考,具体如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>www.gxlcms.com js数组、字符串去重</title> </head> <body><script type="text/javascript">/*数组去重*/function quchong(arr){var len = arr.length;arr.sort();for(var i=len-1;i>0;i--){if(arr[i]==arr[i-1]){arr.splice(i,1);}}return arr;}var a = ["a","a","b"...
如何使用,直接上代码 /*** 安装node-xlsx插件*/ var path = require(path) var fs = require(fs) var xlsx = require(node-xlsx)//去重算法 Array.prototype.unique = function () {this.sort(); //先排序var res = [this[0]];for (var i = 1; i < this.length; i++) {if (this[i] !== res[res.length - 1]) {res.push(this[i]);}}return res; }//取得xlsx var obj = xlsx.parse(path.resolve(`./xlsx/x.xlsx`)) var newArray = [...
本文实例讲述了JS实现的合并多个数组去重算法。分享给大家供大家参考,具体如下: var arr1 = [a,b]; var arr2 = [a,c,d]; var arr3 = [1,d,undefined,true,null]; //合并两个数组,去重 var concat_ = function(arr1,arr2){//不要直接使用var arr = arr1,这样arr只是arr1的一个引用,两者的修改会互相影响var arr = arr1.concat();//或者使用slice()复制,var arr = arr1.slice(0)for(var i=0;i<arr2.length;i++){arr.indexOf(ar...
本文实例讲述了JS实现数组简单去重及数组根据对象中的元素去重操作。分享给大家供大家参考,具体如下: js数组简单去重 var arr1 = [1, 2, 3, 4, 5, 6, 3, 4, 3]; function arrayUnique1(arr) {var result = [], hash = {};for (var i = 0, elem; (elem = arr[i]) != null; i++) {if (!hash[elem]) {result.push(elem);hash[elem] = true;}}return result; } console.log(arrayUnique1(arr1));结果:js数组根据对象中的元素去重 va...
本文实例讲述了JavaScript重复元素处理方法。分享给大家供大家参考,具体如下: 判断一个字符串中出现次数最多的字符,统计这个次数 //将字符串的字符保存在一个hash table中,key是字符,value是这个字符出现的次数 var str = "abcdefgaddda"; var obj = {}; for (var i = 0, l = str.length; i < l; i++) {var key = str[i];if (!obj[key]) {obj[key] = 1;} else {obj[key]++;} } /*遍历这个hash table,获取value最大的key和val...
1、方法一 var arr = [1, 2, 3, 1, 2, 4];function arrayCnt(arr) {var newArr = [];for(var i = 0; i < arr.length; i++) {if(newArr.indexOf(arr[i]) == -1) {newArr.push(arr[i])}}var newarr2 = new Array(newArr.length);for(var t = 0; t < newarr2.length; t++) {newarr2[t] = 0;}for(var p = 0; p < newArr.length; p++) {for(var j = 0; j < arr.length; j++) {if(newArr[p] == arr[j]) {newarr2[p]++;}}}for(var m = 0; ...