ES5新增方法

1.数组方法

迭代(遍历)方法: forEach0、map0、filter(、 some0、 every0 ; array. some (funct ion (currentValue, index, arr) ) ●some0 方法用于检测数组中的元素是否满足指定条件.通俗点查找数组中是否有满足条件的元素 ●注意它返回值是布尔值,如果查找到这个元素,就返回true,如果查找不到就返回false. ●如果找到第一个满足条件的元素,则终止循环不在继续查找. currentValue:数组当前项的值 ●index :数组当前项的索| ●arr :数组对象本身

 

2.数组方法forEach遍历数组

 arr.forEach(function(value, index, array) {
      //参数一是:数组元素
      //参数二是:数组元素的索引
      //参数三是:当前的数组
})
 //相当于数组遍历的 for循环 没有返回值

3.数组方法filter过滤数组

  var arr = [12, 66, 4, 88, 3, 7];
 var newArr = arr.filter(function(value, index,array) {
//参数一是:数组元素
    //参数二是:数组元素的索引
    //参数三是:当前的数组
    return value >= 20;
});
 console.log(newArr);//[66,88] //返回值是一个新数组

4.数组方法some

some 查找数组中是否有满足条件的元素 
var arr = [10, 30, 4];
var flag = arr.some(function(value,index,array) {
   //参数一是:数组元素
    //参数二是:数组元素的索引
    //参数三是:当前的数组
    return value < 3;
});
console.log(flag);//false返回值是布尔值,只要查找到满足条件的一个元素就立马终止循环

5.筛选商品案例

  1. 定义数组对象数据

    var data = [{
               id: 1,
               pname: '小米',
               price: 3999
          }, {
               id: 2,
               pname: 'oppo',
               price: 999
          }, {
               id: 3,
               pname: '荣耀',
               price: 1299
          }, {
               id: 4,
               pname: '华为',
               price: 1999
          }, ];
  2. 使用forEach遍历数据并渲染到页面中

    data.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);
    });
  3. 根据价格筛选数据

    1. 获取到搜索按钮并为其绑定点击事件

      search_price.addEventListener('click', function() {
      });
    2. 使用filter将用户输入的价格信息筛选出来

      search_price.addEventListener('click', function() {
           var newDate = data.filter(function(value) {
             //start.value是开始区间
             //end.value是结束的区间
          return value.price >= start.value && value.price <= end.value;
          });
           console.log(newDate);
      });
    3. 将筛选出来的数据重新渲染到表格中

      1. 将渲染数据的逻辑封装到一个函数中

        function setDate(mydata) {
             // 先清空原来tbody 里面的数据
         tbody.innerHTML = '';
         mydata.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);
        });
        }
      2. 将筛选之后的数据重新渲染

         search_price.addEventListener('click', function() {
            var newDate = data.filter(function(value) {
            return value.price >= start.value && value.price <= end.value;
            });
            console.log(newDate);
            // 把筛选完之后的对象渲染到页面中
            setDate(newDate);
        });
    4. 根据商品名称筛选

      1. 获取用户输入的商品名称

      2. 为查询按钮绑定点击事件,将输入的商品名称与这个数据进行筛选

         search_pro.addEventListener('click', function() {
            var arr = [];
            data.some(function(value) {
              if (value.pname === product.value) {
                // console.log(value);
                arr.push(value);
                return true; // return 后面必须写true  
              }
            });
            // 把拿到的数据渲染到页面中
            setDate(arr);
        })

6.some和forEach区别

  • 如果查询数组中唯一的元素, 用some方法更合适,在some 里面 遇到 return true 就是终止遍历 迭代效率更高

  • 在forEach 里面 return 不会终止迭代

7.trim方法去除字符串两端的空格

var str = '   hello   '
console.log(str.trim())  //hello 去除两端空格
var str1 = '   he l l o   '
console.log(str.trim())  //he l l o 去除两端空格

8.获取对象的属性名

Object.keys(对象) 获取到当前对象中的属性名 ,返回值是一个数组

 var obj = {
    id: 1,
    pname: '小米',
    price: 1999,
    num: 2000
};
var result = Object.keys(obj)
console.log(result)//[id,pname,price,num]

Object.defineProperty

Object.defineProperty设置或修改对象中的属性

Object.defineProperty(对象,修改或新增的属性名,{
value:修改或新增的属性的值,
writable:true/false,//如果值为false 不允许修改这个属性值
enumerable: false,//enumerable 如果值为false 则不允许遍历
       configurable: false  //configurable 如果为false 则不允许删除这个属性 属性是否可以被删除或是否可以再次修改特性
})

 

9.ES5中的新增方法

         1.对象方法

  1. 1Object.defineProperty0 定义新属性或修改原有的属性。

  2. object .defineProperty(obj, prop, descriptor) Object.defineProperty)第三个参数descriptor说明:以对象形式{}书泻

  3. ●value: 设置属性的值默认为undefined

  4. ●writable:值是否可以重写。true | false 默认为false

  5. enumerable:目标属性是否可以被枚举。true | false默认为falsps

  6. ●configurable: 目标属性是否可以被删除或是否可以再次修改特性true | false默认为false

posted @ 2020-10-18 20:46  清出于兰  阅读(100)  评论(0编辑  收藏  举报