JavaScript 数组学习2

71 阅读1分钟

去重

七种数组遍历的方法

  1. forEach - 普通的数组遍历方法
  2. map - 映射 - 每一次 遍历 返回一个数组元素 - 返回一个新的数组
  3. filter - 过滤 每一个遍历 返回boolean,来决定当前元素是否纳入新的数组
  4. reduce - 归纳 每一次遍历,将元素收归到容器中
  5. reduceRight - reduce的反向操作
  6. every - 判定是否所有元素都符合一个条件
  7. some - 判定是否有某一个或多个符合一个条件

数组去重

var = [0,0,1,2,2,31,4,3,2,2,41,3,4,1,145,6,2,'a','ag','a'];
借用数组中key值唯一性来去重
Array.prototype.unique = function(){
    var temp = {};
    var newArr = [];
    
    for (var i = 0; i < this.length; i++){
        if(!temp.hasOwnProperty(this[i])){ -- 判断是否存在这一key值
         // temp[0] = 0; !0 非0 因为0是false 所以非0为true
            temp[this[i]] = this[i];
            newArr.push(this[i]);          
       }
    }
    return newArr;
}
​
var obj = {'name':123} | obj.hasOwnProperty('name') -判断这个

字符串去重

var str = 'aufdsp2t4tt2bvr2rbkv';String.prototype.unique = function(){
    var temp = {}, newStr = '';
    
    for(var i =0; i < this.length; i++){
        if(!temp.hasOwnProperty(this[i])){
            temp[this[i]] = this[i];
            newStr += this[i];
        }
    }
    return newStr;
}
​
# 对每一个字符进行出现的次数计数,返回只出现了一次的字符串
​
function test(str){
    var temp = {};
    
    for(var i = 0; i < str.length ; i++){
        if(!temp.hasOwnproperty(str[i])){
            temp[str[i]] ++;
        }else{
            temp[str[i]] = 1;
        }
    }
    for (var key in temp){
        if temp[key] === 1{
            return key
        }
    }
}

封装typeof

返回值:array number string boolean object function undefined

function myTypeof(val){
    var type = typeof(val);  typeOf(function(){}) -自身会返回function
    var toStr = Object.prototype.toString;
    var res = {
        '[object Array]':'array',
        '[object Object]': 'oject',
        '[object Number]': 'object number',
        '[object String]': 'object string',
        '[object Boolean]': 'object boolean'
    }
    
    if(val === null){
        return 'null';
    }else if(type === 'object'){
        var ret = toStr.call(var) ; 
        return res[ret];  -- 中括号填写键名
    }else{
        return type;
    }
}