JavaScriptES5新方法


ES5 中给我们新增了一些方法,可以很方便的操作数组或者字符串,这些方法主要包括:

  • 数组方法
  • 字符串方法
  • 对象方法
  • 接下来我们一一进行讲解。

一、数组方法

迭代(遍历)方法:forEach()map()filter()some()every()

1、forEach()

语法:

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

如下面的例子:有一个数组,现在我们想要得到这个数组的每一个元素和索引号,并且得到该数组和该数组中元素之和,我们可以采用如下方法:

var arr = [1,2,3,4]
        var sum = 0;
        arr.forEach(function(value,index,array){
            console.log('数组元素为:'+value);
            console.log('每个数组元素的索引为:'+index);
            console.log('数组元素为:'+array);
            sum += value;
        })
        console.log('数组元素的和为:'+sum);

打印的结果为:
在这里插入图片描述

2、filter()

filter()方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素,主要用于筛选数组它直接返回一个新数组。
语法:

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

举例说明:
返回一个数组中大于15的新数组。

var arr = [13,22,33,4,7,8,16]
        var newArr = arr.filter(function(value,index,array){
            return value >= 15;
        })
        console.log(newArr);

打印结果为:
在这里插入图片描述

3、some()

some()方法用于检测数组中的元素是否满足指定条件. 即查找数组中是否有满足条件的元素 。它返回值是布尔值, 如果查找到这个元素, 就返回true, 如果查找不到就返回false。如果找到第一个满足条件的元素,则终止循环. 不在继续查找。
语法:

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

例如,判断一个数组中是否有大于20的元素存在。

 var arr = [13,22,33,4,7,8,16]
        var s = arr.some(function(value){
            return value > 20;
        })
        console.log(s);

打印结果为:
在这里插入图片描述
查找一个数组中的某元素是否存在。

 var arr1 = ['x','y','z','m','n','o']
        var x = arr1.some(function(value){
            return value = 'x';
        })
        console.log(x);

打印结果为:
在这里插入图片描述

二、字符串方法

1、trim()

trim() 方法会从一个字符串的两端删除空白字符。trim() 方法并不影响原字符串本身,它返回的是一个新的字符串。
语法:

str.trim()

例如:现在有一个字符串,想要去掉其两端的空白字符,操作如下:

var str = '    wh    ';
    console.log(str);
    var str1 = str.trim();
    console.log(str1);
    </script>

打印结果为:
在这里插入图片描述

三、对象方法

1、Object.keys()

Object.keys()用于获取对象自身所有的属性。效果类似 for…in,返回一个由属性名组成的数组。
语法:

Object.keys(obj)

例如现在有一个对象,我们想要获取它里面的属性名,我们就可以这么操作:

 var obj = {
        id: 1,
        name: '王欢',
        sex:'女',
        age: 18
    }
    console.log(obj);
    var obj1 = Object.keys(obj);
    console.log(obj1);

打印的结果为:
在这里插入图片描述
如果我们想使用上面得到的数组obj1中的内容,就可以通过forEach来遍历获取。
代码为:

obj1.forEach(function(value){
        console.log(value);
    })

打印的结果为:
在这里插入图片描述

2、Object.defineProperty()

Object.defineProperty()定义对象中新属性或修改原有的属性。
语法:

Object.defineProperty(obj, prop, descriptor)
  • obj:必需。目标对象
  • prop:必需。需定义或修改的属性的名字
  • descriptor:必需。目标属性所拥有的特性

这里我们需要注意的是:descriptor这个值有几个限定,首先它必须以对象的形式写入。
其次,它可以写的值有:

意义
value设置属性的值 默认为undefined
writeable值是否可以重写。true /false 默认为false
enumberable目标属性是否可以被枚举。true /false 默认为 false
configurable目标属性是否可以被删除或是否可以再次修改特性 true / false 默认为false

例如:
当我们要修改上例中的对象的name属性时,我们可以操作为:

var obj = {
        id: 1,
        name: '王欢',
        sex:'女',
        age: 18
    }
    console.log(obj);
   Object.defineProperty(obj,'name',{
       value:'小熊'
   })
   console.log(obj);

打印结果为:
在这里插入图片描述
如果我们要将sex属性设置为不可修改时,可以操作为:

 Object.defineProperty(obj,'sex',{
       writable:false
   })
   obj.sex = '男'
   console.log(obj);

当我们修改属性后,在打印这个对象,得到的结果为:
在这里插入图片描述
当我们将sex设置为:writable:true,在打印试试:
在这里插入图片描述修改成功。
如果我们想要让上述中的age在遍历的时候被隐藏掉2,我们可以做如下操作:

 Object.defineProperty(obj,'age',{
       enumerable:false
   })
   console.log(Object.keys(obj));

打印的结果为:
在这里插入图片描述
可以看到age这个属性遍历时并不会显示。
需要注意的是,通过Object.defineProperty()添加的属性,其enumerable值也默认为false,所以在遍历的时候也不显示,如果想要显示,直接将其手动改为true.
如果我们不想删除某个属性,并且禁止其被删除,应该怎么操作呢,这里就要要用到configurable这个值。
以上述为例,如果不允许id属性被删除,应该操作为:

Object.defineProperty(obj,'id',{
       configurable:false
   })
   delete obj.id
   console.log(obj);

输出结果为:
在这里插入图片描述
当我们通过delete来删除id属性时,发现删除失败。
而且,对于configurable这个值,我们还要谨记:它不可被二次修改。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值