# 7.ES5新增方法
# 1.数组方法
# 迭代(遍历)方法:
forEach()、map()、filter()、some()、every()
// forEach()
array.forEach(function(currentValue, index, arr))
//
let arr = [1,2,3,4,5,6,7,8]
arr.forEach(function(n, index, arr1){
console.log(n); // 输出的是数组中每一个元素
console.log(index); // 输出的是索引值
console.log(arr1); // 输出的是数组本身
})
// map() 映射
// 返回一个新的数组,新数组中的元素是通过修改后的元素,用于根据原有元素的基础上生成新的函数——与数学上的映射概念类似
let arr = [1,2,3,4,5,6,7,8,9]
let result = arr.map(function(n,index,arr1) {
console.log(n)
console.log(index)
console.log(arr1)
return n+1
})
console.log(result) // 2,3,4,5,6,7,8,9,10
// filter() 过滤器
// 返回一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素,用于筛选数组
array.filter(function(currentValue, index, arr))
//
let arr = [1,2,3,4,5,6,7,8,9,10,11]
let result = arr.filter(function(n, index, arr1) {
console.log(n)
console.log(index)
console.log(arr1)
return n >= 10
})
console.log(result) // 10 11
// some()
// 用于检测数组中的元素是否满足指定条件、即查找元素中是否有满足条件的元素
// 返回的是一个布尔值,而非是一个新数组,如果查找到该元素,则返回true,否则为false
// 在找到之后即停止循环
array.some(function(currentValue, idnex, arr))
//
let arr = [1,2,3,4,5,6,7,8,9,10]
let result = arr.some((n, index, arr1) => {
console.log(n)
console.log(index)
console.log(arr1)
return n > 10
})
console.log(result) // false
result = arr.some((n) => {
console.log(n)
return n === 2
})
console.log(result) //true
// every() 用来检测数组中所有元素是否满足指定条件
let arr = [1,2,3,4,5]
let result = arr.every((n) => {
console.log(n)
return n < 3
})
console.log(result) // false
result = arr.every((n) => {
console.log(n)
return n > 0
})
console.log(result)
# 2.字符串方法
trim() 方法会从一个字符串两端删除空白字符,且不会影响原字符串,返回一个新的字符串
str.trim()
var str = ' 试试 '
console.log(str.trim())
# 3.对象方法
Object.keys() 用于获取对象自身所有的属性
Object.keys(obj)
效果类似于 for... in ...
返回一个由属性名组成的数组
let obj = {
name: '张三',
age: 19,
subject: '犯罪'
}
console.log(Object.keys(obj))
// [name,age,subject]
Object.defineProperty() 定义新属性或修改原有的属性
Object.defineProperty(obj ,prop, descriptor)
// obj 目标对象
// prop 需定义或修改的属性的名字
// descriptor 目标属性所拥有的特性,以对象的形式{}书写
// value:设置属性的值,默认为undefined
// writable: 是否可以重写,默认为false
// enumerable:目标属性是否可以被枚举。默认为false
// configurable:目标属性可否被删除或再次修改特性,默认为false
// 以前的属性修改
obj.age = 20
// 使用该方法修改属性
Object.defineProperty(Obj, 'age', {
value: 20
// 不允许修改该值
writable: false
})