ES5中新增的三种方法

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

一、数组方法

迭代(遍历)方法:forEach()、map()、filter()、some()、every()
map()和forEach()作用相似,every()和some()作用相似。

(1)forEach()语法:array.forEach(function(currrentValue,index,arr))
currrentValue:数组当前项的值
index:数组当前项的索引
arr:数组对象本身

//forEach遍历数组
var array = [1,2];
var sum = 0;
array.forEach(function(value,index,arr) {
     console.log("每个数组元素" + value);
     console.log("每个数组元素的索引号" + index);
     console.log("数组本身" + arr);
     sum = sum + value;
})
console.log(sum);

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

//filter筛选数组,选出大于20的数
var array = [32,15,22,75];
var newArray = array.filter(function(value,index) {
       return value >= 20;
});
console.log(newArray);

(3)some()语法:array.some(function(currrentValue,index,arr))
some()方法用于检测数组中的元素是否满足指定条件,通俗点查找数组中是否有满足条件的元素。
注意:它的返回值是布尔值,如果查找到这个元素,就返回true,如果查找不到就返回false。
如果找到第一个满足条件的元素,则终止循环,不再继续查找。

//some查找数组中是否有大于20的数
var array = [10,30,4];
var flag = array.some(function(value) { 
       return value >= 20;
});
console.log(flag);

注意:在forEach和filter里面使用return true不会终止遍历;但是在some里面使用return true就是终止遍历。
some效率更高,如果想要查询数组中唯一的元素,用some方法更合适。

二、字符串方法

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

var str = "  zhangsan   ";
var str1 = str.trim();
console.log(str1); //执行结果zhangsan的左右两侧不会有空白字符

三、对象方法

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

var obj = {
   id:1,
   name:"张三",
   age:20
};
var arr = Object.keys(obj);
console.log(arr);//执行结果为['id','name','age']

(2)Object.defineProperty()定义对象中新属性或修改原有的属性。
语法:Object.defineProperty(obj,prop,descriptor)
obj:必需,目标对象
prop:必需,需定义或修改的属性的名字
descriptor:必需,目标属性所拥有的特性
第三个参数descriptor说明:以对象形式{}书写。
value:设置属性的值,默认为undefined;
writable:值是否可以重写,true或false,默认为false;
enumerable:目标属性是否可以被枚举,true或false,默认为false;
configurable:目标属性是否可以被删除或是否可以再次修改特性,true或false,默认为false。

var obj = {
   id:1,
   name:"张三",
   age:20
};
//添加新属性score并设置属性的值
Object.defineProperty(obj,"score",{
   value:100
});
console.log(obj);
//修改age属性中的值
Object.defineProperty(obj,"age",{
   value:25
});
console.log(obj);
//属性中的值是否可以重写
Object.defineProperty(obj,"id",{
   writeble:false  //如果值为false,则不允许修改这个属性值
});
obj.id = 2;
console.log(obj); //执行结果属性age的id仍然是1
//目标属性是否可以被枚举
Object.defineProperty(obj,"sex",{
   value:"男",
   writeble:false ,
   enumerable:false //如果值为false,则不允许遍历
});
console.log(Object.keys(obj);
//执行结果为['id','name','age'],新添加的sex属性并没有被遍历出来,这是因为enumerable的值为false,不允许遍历
//目标属性是否可以被删除或是否可以再次修改特性
Object.defineProperty(obj,"sex",{
   value:"男",
   writeble:false ,
   enumerable:false,
   configurable:false  //如果值为false,则不允许被删除,也不允许再修改第三个参数里面的特性
});
delete obj.sex;
console.log(obj); //执行结果依然还有sex这个属性
delete obj.name;
console.log(obj); //执行结果对象原有的属性name被删除了,这是因为name这个属性是本来就有的,并没有规定说不能删除
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值