数组去重和数组拍平

1 简单数组去重

 1 Array.prototype.unique = function(){
 2          var obj={},res=[]; //temp用于存放去重后的元素
 3
 4          for(var i=0;i<this.length;i++){
 5              var temp = this[i];
 6              if(!obj[ (typeof temp) + temp ]){
 7                  res.push(temp);
 8                  obj[ (typeof temp) + temp ] =true;
 9              }
10          }
11
12          return res;
13     };
14     var arr = [1,2,1,‘1‘,‘2‘,3];
15     console.log(arr.unique());

2 多种数据类型的数组去重

 1 Array.prototype.multiUnipque = function (){
 2         //判断对象类型的方法
 3         var isEqual = function (obj1, obj2){
 4             //判断两个对象的地址是否一样,地址一样则必相等,这里只为了优化性能
 5             if(obj1 === obj2){
 6                 return true;
 7             }
 8             if(typeof(obj1)=="object"&&typeof(obj2)=="object"){
 9                 //判断两个对象类型一致且为object类型
10                 var count= 0;
11                 for(var attr in obj1){
12                     count++;
13                     if(!isEqual(obj1[attr],obj2[attr])){
14                         return false;
15                     }
16                 }
17                 for(var attr in obj2){
18                     count--;
19                 }
20                 return count==0;
21             }else if(typeof(obj1)=="function"&&typeof(obj2)=="function"){
22                 //判断两个对象类型一致且为function类型
23                 if(obj1.toString()!==obj2.toString()){
24                     return false;
25                 }
26             }else {    //判断两个对象类型不一致,再判断值是否相等
27                 if(obj1!=obj2){
28                     return false;
29                 }
30             }
31             return true;
32         }
33
34         //temp作为传入数组arr的备份,在不改变原数组的基础上进行去重操作
35         var temp=this.slice(0);
36         for(var i=0;i<temp.length;i++){
37             for(var j=i+1;j<temp.length;j++){
38                 if(isEqual(temp[j],temp[i])){
39                     temp.splice(j,1);//删除该元素
40                     j--;
41                 }
42             }
43         }
44         return temp;
45     }
46
47     var arr = [1,2,1,‘1‘,‘2‘,3,[1],[1],{a:1,b:2},{a:1},{a:1,b:2}];
48     console.log(arr.multiUnipque());

3 应用:数组拍平

用数组方法实现如下:

var arr = [1, [2, [3, 4]]];

arr.toString().split(",").map(function(item){ return +item; }) ;

用模拟方法实现:

数组去重和数组拍平

时间: 2024-08-13 05:37:28

数组去重和数组拍平的相关文章

js 数组去重(数组元素是对象的情况)

js数组去重有经典的 几种方法 但当数组元素是对象时,就不能简单地比较了,需要以某种方式遍历各值再判断是否已出现. 因为: 1.如果是哈希判断法,对象作哈希表的下标,就会自动转换成字符型类型,从而导致所有元素都相等,这时判断方法不再有意义.一般最后数组就只剩一个 2.如果是直接比较法,则因为对象在内存中是按引用访问的,属性值相同的对象也不会相等,简单的直接判断不再有意义.一般最后数组还是原样 所以就需要进行值的比较 当然了,也可以换着法来将相应对象转为字符串(不是默认的那种[object Obj

几个有用小函数(数组去重,数组、字符串排序)

1.数组去重(array_unique): <?php $a=array("a"=>"Cat","b"=>"Dog","c"=>"Cat"); print_r(array_unique($a)); ?> 输出: Array ( [a] => Cat [b] => Dog ) 2.数组.字符串排序(sort): sort(array,sorting

es 数组去重,数组里面的对象去重

// 数组去重 { const arr = [1,2,3,4,1,23,5,2,3,5,6,7,8,undefined,null,null,undefined,true,false,true,'中文','','','hello','中文']; // 第一种 const r = [...new Set(arr)]; console.log(r); // [1, 2, 3, 4, 23, 5, 6, 7, 8, undefined, null, true, false, "中文", &qu

javascript数组去重 js数组去重

数组去重的方法 一.利用ES6 Set去重(ES6中最常用) function unique (arr) { return Array.from(new Set(arr)) } var arr = [1,1,'true','true',true,true,15,15,false,false, undefined,undefined, null,null, NaN, NaN,'NaN', 0, 0, 'a', 'a',{},{}]; console.log(unique(arr))  //[1,

php 数组去重 (一维数组与二维数组)

数组中重复项的去除 一维数组的重复项: 使用array_unique函数即可,使用实例如下: <?php                   $aa=array("apple","banana","pear","apple","wail","watermalon");                   $bb=array_unique($aa);                 

js数组拍平(数组扁平化)的五种方式

1.数组拍平也称数组扁平化,就是将数组里面的数组打开,最后合并为一个数组 2.实现 var arr = [1,2,[3,4,5,[6,7,8],9],10,[11,12]]; a:递归实现 function fn(arr){ let arr1 = [] arr.forEach((val)=>{ if(val instanceof Array){ arr1 = arr1.concat(fn(val)) }else{ arr1.push(val) } }) return arr1 } b:reduc

js 数组去重

1.前言 去重方法千千万万,你要哪一种 2.es系列方法 2.1.es6 Set()方法 介绍:ES6提供了新的数据结构Set.它类似于数组,但是成员的值都是唯一的,没有重复的值.Set函数可以接受一个数组(或类似数组的对象)作为参数,用来初始化 new Set(test);//test为去重的数组 2.2.es7 includes Array.prototype.includes方法返回一个布尔值,表示某个数组是否包含给定的值,与字符串的includes方法类似.该方法属于 ES7 ,但 Ba

javaScript数组去重方法

在JAvascript平时项目开发中经常会用到数组去重的操作.这时候就要用到JS数组去重的方法了. demo1: 第一种:JS数组去重操作方法是利用遍历原数组,利用数组的indexOf()方法来来判断新数组b中是否有原数组a中的元素,如果没有的话则在b数组的后面追加上a[i],如果有的话就不执行任何操作,最后可以达到数组去重的操作. 这种方法应该是平时开发中最常用的JS数组去重的方法了,简单又实用. demo2: 第二种去重的方法比较巧妙,是定义一个空对象和一个空数组,在遍历原数组的时候来用原数

json数组去重

// json数组去重 function getJsonArr(arr) { //定义需要的空数组 var newArr = []; //定义转换字符串后的数组 var newStringArr = []; $.each(arr, function (i, v) { var sArr = JSON.stringify(v); if ($.inArray(sArr, newStringArr) == -1) { // 根据字符串数组push对象 newStringArr.push(sArr); n