zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    【BZOJ2424】[HAOI2010]订货 最小费用流
    【BZOJ1935/4822】[Shoi2007]Tree 园丁的烦恼/[Cqoi2017]老C的任务 树状数组
    【BZOJ2500】幸福的道路 树形DP+RMQ+双指针法
    【BZOJ4726】[POI2017]Sabota? 树形DP
    【BZOJ4883】[Lydsy2017年5月月赛]棋盘上的守卫 KM算法
    【BZOJ4881】5月月赛D 线段游戏 树状数组+set
    【BZOJ4518】[Sdoi2016]征途 斜率优化
    【BZOJ4818】[Sdoi2017]序列计数 DP+矩阵乘法
    【BZOJ2553】[BeiJing2011]禁忌 AC自动机+期望DP+矩阵乘法
    【BZOJ3211】花神游历各国 并查集+树状数组
  • 原文地址:https://www.cnblogs.com/llanq123/p/13837048.html
Copyright © 2011-2022 走看看