配列の求め方と方法の比較

10569 ワード

配列方法の紹介:
every()       数値要素の各要素が条件に合っているかどうかを検出します.filter()      は数値要素を検出し、条件に合ったすべての要素の配列を返します.map()     配列の各要素を関数で指定し、処理後の配列を返します.some()       配列内の要素が指定条件(関数提供)を満たしているかどうかを検出します.レデュース()     配列内の各値(左から右まで)は統合を開始し、最終的には値reduceRight()を返します.  配列内の各値(右から左)は統合を開始し、最終的には1つの値eval()   JavaScript文字列を計算し、スクリプトコードとして実行します.for           循環コードブロックの一定回数    指定された条件がtrueの場合、循環指定されたコードブロックdo/while    同じように指定された条件がtrueの場合に循環指定されたコードブロックfor in      巡回エルゴードオブジェクトの属性 配列内の各要素を呼び出します.
具体的な方法とコード:
まず、データソースとしての配列を設定します.
var arr = [1, 2, 3, 4, 5, 6,7,8,9,10];
  • every()方法:
  • (function() { var sum = 0; function getSum(item, index, array) { sum += item; console.log(sum); return true;//  every                 false             true }; arr.every(getSum); console.log("use every:sum = " + sum); })();
  • some()方法:
  • (function() { var sum = 0; function getSum(item, index, array) { sum += item; console.log(sum); }; arr.some(getSum); console.log("use some:sum = " + sum); })();
  • array.filter()方法:
  • (function() { var sum = 0; function getSum(item, index, array) { sum += item; console.log(sum); }; arr.filter(getSum); console.log("use filter:sum = " + sum); })();
  • array.map()方法:
  • (function() { var sum = 0; function getSum(item, index, array) { sum += item; console.log(sum); }; arr.map(getSum); console.log("use map:sum = " + sum); })();
  • froEach()方法:
  • (function() { var sum = 0; function getSum(item, index, array) { sum += item; console.log(sum); }; arr.forEach(getSum); console.log("use forEach:sum = " + sum); })();
  • reduce()順帰法:
  • arr.reduce(function(prevResult, item, index, array) { return prevResult += item; });
  • reduceRight()逆帰并方法:
  • arr.reduceRight(function(prevResult, item, index, array) { return prevResult += item; });
  • forサイクル方法
  • (function() { for (var i = 0, sum = 0; i < arr.length; i++) { sum += arr[i]; console.log(sum); } console.log("use for:sum = " + sum); })();
  • whileサイクル方法
  • (function(){ var i = 0, sum = 0; while(i<arr.length){ sum+=arr[i]; console.log(sum); i++; } console.log("use while:sum = " + sum); })();
  • for-in方法
  • (function() { var sum = 0; for (var index in arr) { sum += arr[index]; console.log(sum); } console.log("use for-in:sum = " + sum); })();
  • forEach()メソッド(書き換え)
  • var calc = {
        sum: 0
    };
    function getSum(item, index, array) {
        this.sum += item;
        console.log(this.sum);
    }
    arr.forEach(getSum,calc);
    console.log('use forEach and change this:sum=' + calc.sum);
  • join()メソッド
  • eval(arr.join("+"));
    /*              "+"       "1+2+3+4+5+6"eval()  ,eval()           ,                        。*/
    効率の比較:
    console.time("getSum");
        for (var i = 0; i < 1000000; i++){
            sum = 0;
            getSum(arr);
        }
        console.timeEnd("getSum");//
    比較:ブラウザ–Google Chrome
    forEach  (1264.000ms)<every1276.000ms)<filter  (1416.000ms)<some1448.000ms)<reduce  (4061.000ms)<map  (4695.000ms)<for8733.000ms)<while9541.000ms)
    参考記事:
  • 「JavaScript Arayオブジェクト」
  • 『【JS趣味】行列の和を求める方法集』;
  • 『JavaScript学習ノート:配列の求め方』