ホームページ >ウェブフロントエンド >jsチュートリアル >Javascript配列の基礎入門_基礎知識

Javascript配列の基礎入門_基礎知識

WBOY
WBOYオリジナル
2016-05-16 15:10:511189ブラウズ

JavaScript は魔法の言語であり、その配列も同様にユニークです。余分なものを取り除き、本質を抽出し、一般的に使用されるベスト プラクティスをまとめます。間違いがあればご指摘ください。

JavaScript 配列は、オブジェクトの特性を持つ配列のようなオブジェクトです。プロパティ名が小さい連続した整数の場合は、配列を使用する必要があります。それ以外の場合は、オブジェクトを使用する必要があります。

配列ソース

すべての配列は Array から構築されます。コンストラクター プロパティをテストしてみましょう。

var arr = [];
arr.constructor === Array; // true
arr.constructor === Array.prototype.constructor; // true

配列の作成

//数组字面量方式
var arr1 = [1, 2, 3]; // [1,2,3]

//构造函数方式
var arr2 = new Array();    // [] 空数组
var arr3 = new Array('9');   // ["9"] 一个字符串元素
var arr4 = new Array(9);    // [] 数组长度length为9
var arr5 = new Array([9]);   // [[9]] 相当于二维数组
var arr6 = new Array(1, 2, 3); // [1, 2, 3]
var arr7 = new Array(1, function f(){}, {o : 6}, null,undefined,true);
// 数组可以存储任意混合数据类型

arr4 の動作方法により、数値パラメーターが 1 つだけ Array コンストラクターに渡されると、コンストラクターは長さ属性が設定された空の配列を返します。したがって、短くて簡潔な配列リテラル方式を使用することをお勧めします。

オブジェクトが配列であるかどうかを検出します

var arr1 = [1, 2, 3];
typeof(arr1); // object

typeof が型を正しく検出しないことはよく知られています。

arr1 instanceof Array; //true

Web ページ内では、instanceof メソッドは問題ありませんが、他の Web ページをネストすると、グローバル スコープが 2 つになり、相互に呼び出す際の検出に問題が発生します。

Array.isArray(arr1); // true

Array.isArray() は ECMAScript5 の新しいメソッドであり、欠陥はありません。唯一の問題は、IE8 ブラウザーがこれをサポートしておらず、IE9 ブラウザーが厳密モードでサポートしていないことです。

Object.prototype.toString.apply(arr1).slice(8, -1); // Array

最後の方法は、タイプを検出する最良の方法です。

配列の長さ

配列の長さもその属性です。長さを増やしても範囲外エラーは発生しません。
長さの値は、配列の最大の整数の属性名に 1 を加えたものと等しくなります。

var arr1 = [];
arr1[9] = 1; // 长度为10,只包含一个元素的数组

名前が長さ以上の属性を削除するには、小さな値を設定します。
長さの値が 0 に設定されている場合、それは配列をクリアすることと同じです。

var arr2 = [1, 2, 3, 4, 5];
arr2.length = 3; // [1, 2, 3]
arr2.length = 0; // []

配列トラバーサル

配列を走査する場合、配列を走査するために for in ループを使用しないでください。for in はプロトタイプ チェーン上のすべてのプロパティを走査しますが、それほど多くのプロパティは必要ありません。 for ループを使用することをお勧めします。

var arr1 = [1, 2, 3];
arr1.test = 9;

//for in 方式
for(var prop in arr1){
  cosole.log(prop, arr1[prop]);
}
// 输出如下
// 0 1
// 1 2
// 2 3
// test 9

//for循环方式
for(var i = 0, len = arr1.length; i < len; i++){
  console.log(arr1[i]);
}
//输出如下
// 1
// 2
// 3

for in メソッドには余分なテスト値があり、hasOwnProperty 関数を使用して削除できることがわかりますが、これは for ループ メソッドよりもはるかに遅くなります。
配列の長さのキャッシュは必要な手順であり、アクセスごとにパフォーマンスのオーバーヘッドが発生します (最新のブラウザーはこの側面を最適化しています)。

概要

配列の基本知識を簡単に紹介します。この時点で、配列をより包括的に理解できます。次の記事では Array メソッドを紹介します。

JavaScript は理解するのが容易ではない側面がたくさんありますが、長い期間の学習を通じて、私は徐々に Javascript に夢中になってきました (今は愛する女の子がいないため)。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。