zoukankan      html  css  js  c++  java
  • dojo 官方翻译 dojo/_base/array 版本1.10

    官方地址:http://dojotoolkit.org/reference-guide/1.10/dojo/_base/array.html#dojo-base-array

    array模块dojo进行了很好的封装,如果想要调用必须先加载该模块:

    require(["dojo/_base/array"], function(array){
      // array contains the features
    });

      indexOf()

    返回值:字符串在数组中第一次出现的位置,如果没有找到默认返回-1.

    require(["dojo/_base/array"], function(array){
      array.indexOf(arrayObject, valueToFind, fromIndex, findLast);
    });

      示例:

    require(["dojo/_base/array", "dojo/dom", "dojo/dom-construct", "dojo/on", "dojo/domReady!"],
    function(array, dom, domConst, on){
    
      var arrIndxOf = ["foo", "hoo", "zoo"];
    
      on(dom.byId("refButton1"), "click", function(){
        var position = array.indexOf(arrIndxOf, "zoo");
        domConst.place(
          "<p>The index of the word 'zoo' within the array is " + position + "</p>",
          "result1",
          "after"
        );
      });
    
    });
    <div>The content of our test array is <code>["foo", "hoo", "zoo"]</code>.</div>
    <button id="refButton1" type="button">Show the index of the word 'zoo' within the array.</button>
    <div id="result1"></div>

    lastIndexOf()

    返回值:字符串在数组中的最后位置,如果没有找到默认返回-1.

    require(["dojo/_base/array"], function(array){
      array.lastIndexOf(arrayObject, valueToFind, fromIndex);
    });

    示例:

    require(["dojo/_base/array", "dojo/dom-construct", "dojo/dom", "dojo/on", "dojo/domReady!"],
    function(array, domConst, dom, on){
    
      var arrLastIndxOf = ["foo", "hoo", "zoo", "shoe", "zoo", "nuu"];
    
      on(dom.byId("refButton2"), "click", function(){
        var position = array.lastIndexOf(arrLastIndxOf, "zoo");
        domConst.place(
          "<p>The last index of the word 'zoo' within the array is " + position + "</p>",
          "result2",
          "after"
        );
      });
    });
    <div>The content of our test array is <code>["foo", "hoo", "zoo", "shoe", "zoo", "nuu"]</code>.</div>
    <button id="refButton2" type="button">Show the last index of the word 'zoo' within the array.</button>
    <div id="result2"></div>

    forEach()

    遍历数组或者nodelists。

    require(["dojo/_base/array"], function(array){
      array.forEach(arrayObject, callback, thisObject);
    });

    第三个参数,调节forEach()的访问范围。

    示例:

    require(["dojo/_base/array"], function(array){
      var foo = {
        myMethod: function(el){
            console.log(el);
        }
      };
    
      array.forEach(["a","b","c"],function(item){
        this.myMethod(item);
      }, foo);
    });

    如果你想break这个循环,可以使用some()

    require(["dojo/_base/array", "dojo/dom", "dojo/on", "dojo/domReady!"],
    function(array, dom, on){
    
      on(dom.byId("start"), "click", function(){
        var myArray = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
            count;
    
        // iterate ALL entries of myArray
        count = 0;
        array.forEach(myArray, function(entry){
          count++;
        });
    
        alert("iterated " + count + " entries (forEach())"); // will show "iterated 10 entries"
    
        // let's only iterate the first 4 entries of myArray
        count = 0;
        array.some(myArray, function(entry){
          if(count >= 4){
            return false;
          }
          count++;
        });
    
        alert("iterated "+count+" entries (some())"); // will show "iterated 4 entries"
      });
    });
    <button id="start" type="button">Start Testloops</button>

    filter()

    返回值:数组过滤之后的结果数组。

    require(["dojo/_base/array"], function(array){
      filteredArray = array.filter(unfilteredArray, callback, thisObject);
    });

    示例:

    require(["dojo/_base/array", "dojo/dom", "dojo/dom-construct", "dojo/on", "dojo/domReady!"],
    function(array, dom, domConst, on){
      var arr = [
        { surname: "Washington", name: "Paul" },
        { surname: "Gordon", name: "Amie" },
        { surname: "Meyer", name: "Sofie" },
        { surname: "Jaysons", name: "Josh" },
        { surname: "Washington", name: "George" },
        { surname: "Doormat", name: "Amber" },
        { surname: "Smith", name: "Susan" },
        { surname: "Hill", name: "Strawberry" },
        { surname: "Washington", name: "Dan" },
        { surname: "Dojo", name: "Master" }
      ];
    
      on(dom.byId("start"), "click", function(){
        var filteredArr = array.filter(arr, function(item){
          return item.surname == "Washington";
        });
    
        array.forEach(filteredArr, function(item, i){
          domConst.create("li", {innerHTML: i+1+". "+item.surname+", "+item.name}, "filtered-items");
        });
    
        array.forEach(arr, function(item, i){
          domConst.create("li", {innerHTML: i+1+". "+item.surname+", "+item.name}, "unFiltered-items");
        });
      });
    });
    <button id="start" type="button">Filter array</button>
    <br/>
    <div style=" 300px; float: left;">
      Filtered items<br />
      (only people with "Washington" as surname)
      <ul id="filtered-items">
    
      </ul>
    </div>
    <div style=" 300px; float: left;">
      Unfiltered items<br />
      (all people are represented in the list)
      <ul id="unFiltered-items">
    
      </ul>
    </div>

    map()

    返回值:经过修改之后的另外一个数组。

    require(["dojo/_base/array"], function(array){
      array.map(arrayObject, callback, thisObject);
    });

    示例:

    require(["dojo/_base/array", "dojo/dom", "dojo/dom-construct", "dojo/on", "dojo/domReady!"],
    function(array, dom, domConst, on){
    
      var arrValues = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
    
      on(dom.byId("button"), "click", function(){
        var doubleValue = array.map(arrValues, function(item){
          return item * 2;
        });
    
        array.forEach(doubleValue, function(item){
          var li = domConst.create("li");
          li.innerHTML = item;
          dom.byId("arrValuesAfter-items").appendChild(li);
        });
    
        array.forEach(arrValues, function(item){
          var li = domConst.create("li");
          li.innerHTML = item;
          dom.byId("arrValues-items").appendChild(li);
        });
      });
    });
    <button id="button" type="button">Run array.map()</button>
    <br />
    <div style=" 300px; float: left; margin-top: 10px;">
      Values before running array.map()
      <ul id="arrValues-items"></ul>
    </div>
    <div style=" 300px; float: left; margin-top: 10px;">
      Values after running array.map()
      <ul id="arrValuesAfter-items"></ul>
    </div>

    有时候为了不修改原数组本身,dojo提供了dojo/_base/lang::clone()

    示例:

    require(["dojo/_base/array", "dojo/_base/lang", "dojo/dom", "dojo/dom-construct", "dojo/on", "dojo/domReady!"],
    function(array, lang, dom, domConst, on){
    
      var arrSalary = [
        { surname: "Washington", name: "Paul", salary: 200 },
        { surname: "Gordon", name: "Amie", salary: 350 },
        { surname: "Meyer", name: "Sofie", salary: 100 },
        { surname: "Jaysons", name: "Josh", salary: 2500 },
        { surname: "Washington", name: "George", salary: 10 },
        { surname: "Doormat", name: "Amber", salary: 320 },
        { surname: "Smith", name: "Susan", salary: 3200 },
        { surname: "Hill", name: "Strawberry", salary: 290 },
        { surname: "Washington", name: "Dan", salary: 200 },
        { surname: "Dojo", name: "Master", salary: 205 }
      ];
    
      on(dom.byId("button"), "click", function(){
        var raisedSalaries = array.map(arrSalary, function(item){
          var newItem = lang.clone(item);
          newItem.salary += (newItem.salary/100)*10;
          return newItem;
        });
    
        array.forEach(raisedSalaries, function(item, i){
          var li = domConst.create("li");
          li.innerHTML = i+1+". "+item.surname+", "+item.name+". New salary: "+item.salary;
          dom.byId("filteredSalary-items").appendChild(li);
        });
    
        array.forEach(arrSalary, function(item, i){
          var li = domConst.create("li");
          li.innerHTML = i+1+". "+item.surname+", "+item.name+". Old salary: "+item.salary;
          dom.byId("unFilteredSalary-items").appendChild(li);
        });
      });
    });
    <button id="button" type="button">Raise the salary</button>
    <br />
    <div style=" 300px; float: left; margin-top: 10px;">
      Peoples' salaries after raise:
      <ul id="filteredSalary-items"></ul>
    </div>
    <div style=" 300px; float: left; margin-top: 10px;">
      Peoples' salaries before raise:
      <ul id="unFilteredSalary-items"></ul>
    </div>

    some()

    返回值:true or  false。只要方法里有一个是真,那么其将会返回true。常常被用在if语句中。

    require(["dojo/_base/array"], function(array){
      var a = array.some(arrayObject, callback, thisObject);
    });

    示例:检查是否有一个值 >= 1,000,000。

    require(["dojo/_base/array", "dojo/dom", "dojo/dom-construct", "dojo/on", "dojo/domReady!"],
    function(array, dom, domConst, on){
      var arrIndxSome = [200000, 500000, 350000, 1000000, 75, 3];
    
      on(dom.byId("refButton6"), "click", function(){
        if(array.some(arrIndxSome, function(item){ return item >= 1000000; })){
          result = 'yes, there are';
        }else{
          result = 'no, there are no such items';
        }
    
        domConst.place(
          "<p>The answer is: " + result + "</p>",
          "result6",
          "after"
        );
      });
    });
    <div>The content of our test array is <code>[200000, 500000, 350000, 1000000, 75, 3]</code>.</div>
    <button id="refButton6" type="button">Are there some items >=1000000 within the array?</button>
    <div id="result6"></div>

    every()

    返回值:true or false  。只有当方法里面,每一项都返回true,那么最终才会返回true。常常被用在if语句中。

    require(["dojo/_base/array"], function(array){
      array.every(arrayObject, callback, thisObject);
    });

    示例:检查是否每一项都>3000

    require(["dojo/_base/array", "dojo/dom", "dojo/dom-construct", "dojo/on", "dojo/domReady!"],
    function(array, dom, domConst, on){
    
      var arrIndxEvery = [
        { month: "january", income: 2000 },
        { month: "february", income: 3200 },
        { month: "march", income: 2100 }
      ];
    
      on(dom.byId("refButton7"), "click", function(){
        if(array.every(arrIndxEvery , function(item){ return item.income >= 3000; })){
          result = "yes, all income >= 3000";
        }else{
          result = "no, not all income >= 3000";
        }
        domConst.place(
          "<p>The answer is: " + result + "</p>",
          "result7",
          "after"
        );
      });
    });
    <div>The content of our test array is <code>[{ month: "january", income: 2000 }, { month: "february", income: 3200 }, { month: "march", income: 2100 }]</code>.</div>
    <button id="refButton7" type="button">Is the client allowed to get the credit?</button>
    <div id="result7"></div>
  • 相关阅读:
    css实现截取文本
    ob_clean()解决php验证码图片无法显示
    JS获取url参数,修改url参数
    mysql模糊查询特殊字符(\,%和_)处理
    apache反向代理和监听多个端口设置
    页面底部自适应浏览器窗口高度
    变量相关考虑
    php非法输入数据类型
    php socket模拟http中post或get提交数据
    华为专利的 hybrid 端口
  • 原文地址:https://www.cnblogs.com/tiandi/p/3815363.html
Copyright © 2011-2022 走看看