ECMAScript5_javascript スキルの新しい Array メソッドの詳細な例

WBOY
リリース: 2016-05-16 15:06:31
オリジナル
1482 人が閲覧しました

ECMAScript5 は、一連の新しい API インターフェイスを提供します。これらのインターフェイスのほとんどは、IE9、Chrome、FirFor のすべてでサポートされています。また、一部の API は、すべてのブラウザーでサポートされていません。サポートされているほとんどの API のみを紹介します。新しい API を使用すると、元の JavaScript スタイルを維持しながら、非常に信頼性の高いクラスを設計できます。

ECMAScript5 標準は、2009 年 12 月 3 日にリリースされました。これは、既存の Array 配列操作を改善するいくつかの新しいメソッドをもたらします。 (互換性に注意してください)

ES5 には、合計 9 つの Array メソッドがあります: http://kangax.github.io/compat-table/es5/

Array.prototype.indexOf
Array.prototype.lastIndexOf
Array.prototype.every
Array.prototype.some
Array.prototype.forEach
Array.prototype.map
Array.prototype.filter
Array.prototype.reduce
Array.prototype.reduceRight 
ログイン後にコピー

そのうちの 7 つのメソッドを以下に示します。最初の 5 つのメソッドは非常に一般的で、多くの開発者によって使用されています。

1.indexOf()

indexOf() メソッドは、配列内で見つかった最初の要素の位置を返します。要素が存在しない場合は -1 を返します。


var arr = ['apple', 'orange', 'pear'],
found = false;
// 未使用
for (var i = 0, l = arr.length; i < l; i++) {
if (arr[i] === 'orange') {
found = true;
}
}
console.log("found:", found); // ==> found: true
// 使用后
console.log("found:", arr.indexOf("orange") != -1); // ==> found: true 
ログイン後にコピー

2. フィルター()

filter() メソッドは、フィルター条件に一致する新しい配列を作成します。


filter() を使用しない場合:

var arr=[{"name":"apple", "count": 2},{"name":"orange", "count": 5},{"name":"pear", "count": 3},{"name":"orange", "count": 16},]
var newArr = [];
for (var i = 0; i < arr.length; i++) {
if (arr[i].name === "orange") {
newArr.push(arr[i]);
}
}
console.log("Filter results:", newArr); 
ログイン後にコピー

が使用した filter():

var newArr = arr.filter(function(item) {
return item.name === "orange";
});
console.log("Filter results:", newArr); 
ログイン後にコピー

3.forEach()

forEach は、各要素に対応するメソッドを実行し、for ループを置き換えるために使用されます。


var arr = [1, 2, 3, 4, 5, 6, 7, 8];
// 使用for循环
for (var i = 0, l = arr.length; i < l; i++) {
console.log(arr[i]);
}
// 使用forEach循环
arr.forEach(function(item, index) {
console.log(item);
}); 
ログイン後にコピー

4. マップ()

map() は配列の各要素に対して特定の操作 (マッピング) を実行した後、新しい配列を返します。


var oldArr = [{first_name: "Colin",last_name: "Toh"}, {first_name: "Addy",last_name: "Osmani"}, {first_name: "Yehuda",last_name: "Katz"}];
function getNewArr() {
var newArr = [];
for (var i = 0; i < oldArr.length; i++) {
var item = oldArr[i];
item.full_name = [item.first_name, item.last_name].join(" ");
newArr[i] = item;
}
return newArr;
}
var personName = getNewArr();
personName.forEach(function(item, index) {
console.log(item);
})
/****输出结果:
Object {first_name: "Colin", last_name: "Toh", full_name: "Colin Toh"}
Object {first_name: "Addy", last_name: "Osmani", full_name: "Addy Osmani"}
Object {first_name: "Yehuda", last_name: "Katz", full_name: "Yehuda Katz"}
****/ 
ログイン後にコピー

map() メソッドを使用します:

function getNewArr() {
return oldArr.map(function(item, index) {
item.full_name = [item.first_name, item.last_name].join(" ");
return item;
})
}
var personName = getNewArr();
personName.forEach(function(item, index) {
console.log(item);
})
/****输出结果:
Object {first_name: "Colin", last_name: "Toh", full_name: "Colin Toh"}
Object {first_name: "Addy", last_name: "Osmani", full_name: "Addy Osmani"}
Object {first_name: "Yehuda", last_name: "Katz", full_name: "Yehuda Katz"}
****/ 
ログイン後にコピー

5.reduce()

reduce() は、配列の各値を (左から右に) ある値に減らすアキュムレータの関数を実装できます。これは、次のように理解することもできます。配列内の前後の項目で何らかの操作を実行し、最終値

を蓄積します。

シナリオ: 配列内にある一意の単語の数を数えます。


var arr = ["apple", "orange", "apple", "orange", "pear", "orange"];
function getWordCnt() {
var obj = {};
for (var i = 0; i < arr.length; i++) {
var item = arr[i];
obj[item] = (obj[item] + 1) || 1;
}
return obj;
}
console.log(getWordCnt());
// 输出结果:
// Object {apple: 2, orange: 3, pear: 1} 
ログイン後にコピー

reduce() 使用後:

var arr = ["apple", "orange", "apple", "orange", "pear", "orange"];
function getWordCnt() {
return arr.reduce(function(prev, next) {
prev[next] = (prev[next] + 1) || 1;
return prev;
}, {});
}
console.log(getWordCnt());
// 输出结果:
// Object {apple: 2, orange: 3, pear: 1} 
ログイン後にコピー

6, array.some(callback[, thisObject]); callback: 特定の要素をテストするために使用される関数。

thisObject: オブジェクトは実行コールバックとして使用されます。


配列内の特定の項目が条件を満たすかどうかを検出します。


var scores = [45, 60, 70, 65, 95, 85];
var current = 60;
function passed(score) {
return score > current;
}
console.log(scores.some(passed)); // == > true 
ログイン後にコピー

7. array.every(callback[, thisObject]); callback : 各要素をテストするために使用されます。 thisObject: オブジェクトは実行コールバックとして使用されます。

配列内の各項目が条件を満たしているかどうかを確認します。


var scores = [45, 60, 70, 65, 95, 85];
var current = 60;
function passed(score) {
return score > current;
}
console.log(scores.every(passed)); // == > false
ログイン後にコピー
上記の例は、ECMAScript5 の新しい Array メソッドを紹介しています。お役に立てば幸いです。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート