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>
  • 相关阅读:
    BZOJ 1040 (ZJOI 2008) 骑士
    BZOJ 1037 (ZJOI 2008) 生日聚会
    ZJOI 2006 物流运输 bzoj1003
    ZJOI 2006 物流运输 bzoj1003
    NOI2001 炮兵阵地 洛谷2704
    NOI2001 炮兵阵地 洛谷2704
    JLOI 2013 卡牌游戏 bzoj3191
    JLOI 2013 卡牌游戏 bzoj3191
    Noip 2012 day2t1 同余方程
    bzoj 1191 [HNOI2006]超级英雄Hero——二分图匹配
  • 原文地址:https://www.cnblogs.com/tiandi/p/3815363.html
Copyright © 2011-2022 走看看