ES5中新增方法
1.ES5新增方法概述
2.数组方法
(1)forEach()
<script>
var arr = [1, 2, 3];
var sum = 0;
arr.forEach(function(value, index, array) {
console.log(index + '号元素' + value);
console.log('数组是' + arr);
sum += value;
})
console.log(sum);
</script>
(2)filter()
var arr = [10, 15, 21, 34];
var newArr = arr.filter(function(value, index) {
return value >= 20;
});
console.log(newArr);
(3)some()
var arr = [10, 15, 21, 34];
var flag = arr.some(function(value) {
return value >= 20;
})
console.log(flag);
(4)map()
与forEach()类似
var arr = [10, 15, 21, 34];
arr.map(function(value, index) {
arr.push(value*2);
})
console.log(arr);
(5)every()
every()是对数组中每一项运行给定函数,如果该函数对每一项返回true,则返回true
every从迭代开始,一旦有一个不符合条件,则不会继续迭代下去。 every() 不会对空数组进行检测
返回布尔值,遇到不满足条件跳出循环
var arr = [10, 15, 21, 34];
var flag1 = arr.every(function(value) {
return value >= 10;
})
var flag2 = arr.every(function(value) {
return value >= 20;
})
console.log(flag1);
console.log(flag2);
(6)forEach()和some()的区别
<script>
var arr = ['red', 'green', 'pink', 'blue'];
arr.forEach(function(value) {
if (value === 'pink') {
console.log('完成');
return true; //不会终止迭代,会继续遍历其他元素
}
console.log(1);
})
arr.some(function(value) {
if (value === 'pink') {
console.log('完成');
return true; //找到符合条件的元素终止迭代,提高了代码的效率
}
console.log(1);
})
arr.filter(function(value) {
if (value === 'pink') {
console.log('完成');
return true; //filter和forEach一样不会终止迭代
}
console.log(1);
})
//如果要在数组中查询一个唯一的元素,some更合适
</script>
2.字符串方法
3.对象方法
1.Object.keys()
用于获取对象自身的属性
2.Object.defineProperty()
定义对象中的新属性或改变对象中的原有属性
<script>
var obj = {
id: 1,
pname: '小米',
price: 1999
};
//以前的对象添加和修改属性的方式
//obj.num = 100;
//obj.price = 999;
//Object.defineProperty()定义新属性或修改原有的属性
//添加新属性
Object.defineProperty(obj, 'num', {
value: 1000,
enumerable: true //通过Object.defineProperty方法添加的属性
//enumerable默认值是false
});
console.log(obj);
//修改属性
Object.defineProperty(obj, 'price', {
value: 999
});
console.log(obj);
Object.defineProperty(obj, 'id', {
writable: false //不可重写
});
obj.id = 2;
console.log(obj);
Object.defineProperty(obj, 'address', {
value: 'xx省xx市xx区',
writable: false,
enumerable: false, //不会被遍历出来,可保护隐私,默认值为false
configurable: false //adress不允许被删除,默认值为false,并且不再允许修改第三个参数内的数据
});
//获取对象自身所有的属性
var arr = Object.keys(obj);
console.log(arr);
delete obj.address;
delete obj.price;
console.log(obj);
//以下重新修改第三参数是不允许的,因为上面address内的configurable是false
Object.defineProperty(obj, 'address', {
value: 'xx省xx市xx区',
writable: true,
enumerable: true,
configurable: true
});
console.log(obj);
</script>