配列操作にはどんな効果がありますか?

4010 ワード

配列操作にはどんな効果がありますか?1.背景紹介JavaScriptのarrayは、任意のデータタイプを含み、索引を通じて各要素にアクセスすることができます.filter()、some()、map()、forEach()は、ECMAScript 5が配列のために定義される4つの反復方法であり、配列をより便利に操作するためである.
2.知識解析map()方法は、新しい配列を作成し、その結果、行列の各要素が提供する関数を呼び出すことになります.mapメソッドは、元の配列の各要素に順番にコールバック関数を呼び出します.calbackは、各実行後の戻り値(undefinedを含む)を組み合わせて新しい配列を形成します.MDN
let numbers = [1, 5, 10, 15];
let roots = numbers.map(function(x) {
return x * 2;
});
// roots is now [2, 10, 20, 30]
// numbers is still [1, 5, 10, 15]

let numbers = [1, 4, 9];
// let roots = numbers.map(Math.sqrt);
let roots = numbers.map(function(x){
return Math.sqrt(x);
});
// roots is now [1, 2, 3]
// numbers is still [1, 4, 9]

some()方法は、配列内のいくつかの要素が指定された関数のテストに合格したかをテストする.そして、配列内の各要素に対して、calback関数を一回実行して、calbackを「真の値」に戻すまでに(ブール値trueの値に変換できます).このような値が見つかったら、すぐにtrueに戻ります.そうでなければ、私はfalseに戻ります.MDN
function isBigEnough(element, index, array) {
return (element >= 10);
}
var passed = [2, 5, 8, 1, 4].some(isBigEnough);
// passed is false
passed = [12, 5, 8, 1, 4].some(isBigEnough);
// passed is true
filter()法は指定された関数を用いてすべての要素を試験し,試験を通過するすべての要素を含む新しい配列を作成する.filterは配列中の要素ごとに一回のcalback関数を呼び出し、calbackをtrueに戻すまたはtrueに相当する値の要素を利用して新しい配列を作成します.filterは、元の配列MDNを変更しません.
function isBigEnough(element) {
return element >= 10;
}
var filtered = [12, 5, 8, 130, 44].filter(isBigEnough);
// filtered is [12, 130, 44]
forEach()法は配列の各要素に対して一度に提供する関数を実行する.forEach方法は、昇順に配列に効果値が含まれている項目ごとに一回のcalback関数を実行し、それらが削除された(delete方法などを使用して)、または初期化されていない項目はスキップされる(ただし、それらの値がundefinedの項目を含まない).MDN forEach()メソッドのcalbackコールバック関数は、デフォルトでは3つのパラメータをサポートしています.1番目はエルゴード配列要素、2番目は要素に対応するインデックス、3番目は配列自体です.
function logArrayElements(element, index, array) {
console.log("a[" + index + "] = " + element);
}

// 2 ,
[2, 5, ,9].forEach(logArrayElements);

// a[0] = 2
// a[1] = 5
// a[3] = 9

[2, 5,"" ,9].forEach(logArrayElements);
// a[0] = 2
// a[1] = 5
// a[2] =
// a[3] = 9

[2, 5, undefined ,9].forEach(logArrayElements);
// a[0] = 2
// a[1] = 5
// a[2] = undefined
// a[3] = 9

let xxx;
// undefined

[2, 5, xxx ,9].forEach(logArrayElements);
// a[0] = 2
// a[1] = 5
// a[2] = undefined
// a[3] = 9

3.共通の問題配列動作の違いは、map()が新しい配列を作成し、各要素は関数実行後の結果である.元の配列は不変ですsome()は呼び出し関数に従ってtrueまたはfalseを返します.元の配列は変更されません.filter()は新しい配列を作成し、配列は関数を満たす要素セットである.元の配列は変更されません.forEach()forEach()は配列を巡回するだけで、一回のcalback関数を実行します.内容を返していません.この点はmap()の方法、some()の方法、every()の方法と違います.forEach()を印刷して内容を返すとundefinedが現れます.元の内容は変わりません.
4.ソリューション5.コード実戦6.filter()、some()、map()、forEach()の共通点は何ですか?7.参照文献参照:MDN8.他にどのような方法が配列を操作することができますか?every()メソッドは、配列のすべての要素が指定された関数によってテストされたかどうかをテストします.MDN reduce()方法は、アキュムレータおよび配列の各値(左から右へ)に関数を適用して、それを単一の値に低減する.MDN