ES5方法扩展

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

ES5方法扩展


ES5 新增方法概述


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

  • 数组方法
  • 字符串方法
  • 对象方法

数组方法


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


  1. forEcher()
  • 语法:array.forEach(function(currentValue,index,arr))(1) currentValue:数组当前项的值。 (2) index:数组当前项的索引。 (3) arr:数组对象本身。
  • 示例:
// forEach 迭代(遍历)数组。
var arr = [1,2,3,4,5,6,7,8,9,0]
var sum = 0
arr.forEach(function(value,index,array){
  sum += value  // 返回的值是1~9的和。
})

filter()


  • 语法:arrry.filter(function(currentValue,index,arr))(1) filter()方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素,主要用于筛选数组。 (2) 注意它直接返回一个新数组。 (3) currentValue:数组当前项的值。 (4) index:数组当前项的索引。 (5) arr:数组对象本身。


  • 示例:
// filter 筛选数组。
var arr = [1,8,85,84,55,81,63]
// 因为生成了一个新的数组,所以需要定义一个变量来接收一下。
var newArr = arr.filter(function(value,index,array){
  // return value >= 20 返回的值都大于20。
  return value % 2 === 0  // 返回的值都是偶数。
})
console.log(newArr)

3.some()


  • 语法:arrry.some(function(currentValue,index,arr))(1) some()方法用于检测数组中的元素是否满足指定条件,通俗点就是查找数组中是否有满足条件的元素。 (2) 注意它返回值是布尔值,如果找到这个元素,就返回True,如果找不到就返回False。 (3) 如果找到第一个满足条件的元素,则终止循环,不再继续查找。 (4) currentValue:数组当前项的值。 (5) index:数组当前项的索引。 (6) arr:数组对象本身。


  • 示例:
var arr = [15,82,41,53,20,10,3]
var flag = arr.filter(function(value,index,array){
  // return value >= 20 返回值是Ture。
  return value < 3  // 返回值是False。
})


字符串方法


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

var str = '    andy    '
console.log(str)  // 输出结果会在两端产生空格。
var str1 = str.trim()
console.log(str1) // 输出结果会删除在两端产生的空格。

示例:为防止用户输入空格,可以采用 trim() 方法删除两端的空格。


对象方法


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


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


拓展知识


查询商品

// 获取相应的元素
var tbody = document.querySelector('tbody')
var search_price = document.querySeletor('.search_price')
var start = document.querySeletor('.start')
var end = document.querySeletor('.end')
setDate(date)
// 把数据渲染到页面中
function setDate(mydate){
    tbody.innerHTML = ''
    mydate.forEach(function(value) {
        var tr = document.createElement('tr')
        tr.innerHTML = '<td>' + value.id + '</td><td>' + value.pname + '</td><td>' + value.price + '</td>'
        tbody,appendChild('tr')
    });
}
search_price.addEventListener('click',function(){
  var newDate = data.filiter(function(){
    return value.price >= start.value && value.price <= end.value
  })
  // 把筛选完之后的对象渲染到页面中。
  setDate(newDate)
})
// 根据商品名称查找商品
// 如果查询数组中唯一的元素,用 some 方法更合适,因为它找到这个元素,就不再进行循环,效率更高。
var product = document.querySelector('.product')
var search_pro = document.querySeletor('.search_pro')
search_pro.addEventlistener('click',function(){
  var arr = [] 
  date.some(function(value){
    if(value.pname === product.value){
      return ture // return 后面必须写 ture 。
    }
  })
  // 把拿到的数据渲染到页面上。
  setDate(arr)
})


forEach 和 some 的区别

var arr = ['red','pink','green','blue']
arr.forEach(function(value){
  if(value == 'green'){
    console.log('找到了该元素!')
    return ture // 在 forEach 里面,return 不会终止迭代。
  }
  console.log(11)
})
// 在控制台输出3次11.
arr.some(function(value){
  if(value == 'green'){
    console.log('找到了该元素!')
    return ture // 在 some 里面,遇到 return ture 就是终止遍历,迭代效率更高。
  }
  console.log(11)
})
// 在控制台输出2次11
arr.filter(function(value){
  if(value == 'green'){
    console.log('找到了该元素!')
    return ture // 在 filter 里面,return 不会终止迭代。
  }
  console.log(11)
})
// 在控制台输出3次11


总结:forEach 和 some 的区别就是 return 在some中会终止迭代,而在 forEach 中不会。

相关文章
|
2月前
|
网络架构
ES6函数新增了哪些扩展?
ES6函数新增了哪些扩展?
34 0
|
2月前
ES6对象新增了哪些扩展?
ES6对象新增了哪些扩展?
41 0
|
7月前
|
网络架构
ES6学习(六)—函数的扩展
ES6学习(六)—函数的扩展
|
7月前
|
网络架构
ES6学习(五)—数组的扩展
ES6学习(五)—数组的扩展
|
8月前
ES6对象扩展
ES6对象扩展
26 0
|
11月前
|
网络架构
ES6中函数新增了哪些扩展?
ES6允许为函数的参数设置默认值
|
11月前
ES6中对象新增了哪些扩展?
ES6中,当对象键名与对应值名相等的时候,可以进行简写
|
JSON JavaScript 前端开发
ES6特性总结
ES6特性总结
135 6
ES6特性总结
|
JavaScript 算法
ES6 对象的扩展内容
ES6 对象的扩展内容
79 0