es5中的一些方法

数组方法

forEach()

array.forEach(function(currentValue,index,err))

currentValue 数组当前项遍历的值
index 数组当前索引
arr 数组对象本身
该方法用来遍历数组
  • 使用
    var arr = [1,2,3,4,5]
    var sum =0;
    arr.forEach(function(value,index,array){
        sum +=value;
    })
    console.log(sum) // 输出15

filter()

array.filter(function(currentValue,index,arr))
currentValue 数组当前遍历的值
index 数组当前项的索引
arr 数组对象本身
该方法用来创建一个新数组,通过检查指定的数组中符合条件的元素,用于筛选出数组并返回一个新的数组
  • 使用
    var arr = [1, 2, 3, 4, 5]
    var newarr = arr.filter(function(value, index, array) {
        return value >= 2; // 筛选出大于2的元素中
    
    })
    console.log(newarr);  // 打印新数组 可以看到 1已经过滤出去了

some()

array.some(function(currentValue,index,arr))
currentValue 数组当前项的值
index 数组当前项的索引
arr 数组对象本身

该方法用于检测数组中的元素是否满足指定条件,通俗点查找数组中是否有满足条件的元素
返回布尔值 如果查找到这个元素就返回true,如果查找不到就返回false
如果找到第一个满足条件的元素就终止循环不在继续查找
  • 使用
    var arr = [10, 30, 4];
    var flag = arr.some(function(value, index, arr) {
        return value >= 20;
    })
    console.log(flag); // 返回true

字符串方法

trim()

str.trim()
清除字符串左边和右边的空白字符

trim()方法不回影响源字符串本身,返回一个新的字符串
  • 使用
    var str = '   andy   ';
    console.log(str) 输出   andy   
    var str1 = str.trim();
    console.log(str1) 输出 andy

对象方法

Object.keys()

Object.keys(obj) 会将对象遍历并返回对象的key存到一个列表里

obj 对象元素
  • 使用
    var obj = {
        a: '1',
        b: '2',
        c: '3'
    }
    var arr = Object.keys(obj)
    console.log(arr); //输出结果 ["a", "b", "c"]

Object.defineProperty()

Object.defineProperty(obj,prop,descriptor) 定义新属性或修改原有的属性

obj 必须 目标对象
prop 必须 需要定义或修改属性的名字
descriptor 必须 目标属性所拥有的的特性 
    descript内是一个对象
    value 设置属性的值
    writable 值是否可以重写 默认为false
    enumerable 目标属性是否可以被枚举 默认为false  (就是在遍历是能不能获取到这个属性,false就是获取不到)
    configurable 目标属性是否可以被删除或者 是否允许修改descriptor里面的特性 默认为false
    // configurable 设置为false后就不能在后面修改descriport对象里的特性了,会报错
  • 使用
    // 定义对象 
        var obj = {
            id: 1,
            pname: '小米',
            price: 999
        };
    
    
    // 通过方法给对象添加一个新的属性
        Object.defineProperty(obj, 'num', {
            value: 1000, // 给obj对象设置一个num属性并把值设置为1000
    
        })
        console.log(obj); // 输出多出num属性
    
    
    // 通过方法给对象修改属性值
        Object.defineProperty(obj, 'price', {
            value: 10, // 给obj对象的price属性修改为10
    
        })
        console.log(obj); // 输出 price为10
    
    
    // 通过方法设置对象的值是否可以被修改
        Object.defineProperty(obj, 'id', {
            writable: false, // 设置对象不允许修改id这个属性值 改为true就可以修改
        })
        obj.id = 2;
        console.log(obj); // 发现obj的id没有被修改
    
    
    // 通过方法设置对象的值在遍历时是否可以获取到 和 是否可以删除或者修改该对象的特性
        Object.defineProperty(obj, 'address', {
            value: '蓝翔',
            enumerable: false, //不可遍历address属性 默认为 false
            configurable: false // 不可删除和修改这个address属性
        })
        console.log(Object.keys(obj)); // 发现没有遍历address和num属性
        // 从这个方法添加的都是false
        // num没有遍历是因为num是通过这个方法添加到对象里的其他的都是一开始就存在的
        // 如果想让其他的也遍历就需要添加 enumerable方法 如果是像num那样后添加的属性默认就是不能遍历的
    
        delete obj.address; // 删除对象中的address属性
        console.log(obj); // 输出结果 {id: 1, pname: "小米", price: 10, num: 1000, address: "蓝翔"}
        // 发现address没有被删除
        delete obj.pname; // 删除对象原有的属性
        console.log(obj); // {id: 1, price: 10, num: 1000, address: "蓝翔"} 发现是可以被删除的
    
        // 重新修改一下address的特性
        Object.defineProperty(obj, 'address', {
            value: '蓝翔',
            enumerable: true,
            configurable: true
        })
        console.log(obj);
        // Uncaught TypeError: Cannot redefine property: address at Function.defineProperty (<anonymous>)
        // 回报错不能在修改特性了,只能在原来的行修改特性

本博客所有文章是以学习为目的,如果有不对的地方可以一起交流沟通共同学习 邮箱:1248287831@qq.com!