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