ホームページ > 記事 > ウェブフロントエンド > js配列の基本操作(すべて自作)_javascriptスキル
私は長い間jsを使ってきましたが、jsの配列形式について勉強したことがありませんでした。場合によっては、単純な string.split(char) を使用するだけです。この時期に取り組んだプロジェクトでは、多くの場所で配列を使用していました。私は JS をマスターしたと思っていましたが、始めることができませんでした。これから学びます。ふふ。学習した後、js 配列は非常に強力で、VB や C# よりもはるかに強力であることがわかりました。見てみましょう
。1. 配列の作成
var arrayObj = new Array(); //创建一个数组 var arrayObj = new Array([size]); //创建一个数组并指定长度,注意不是上限,是长度 var arrayObj = new Array([element0[, element1[, ...[, elementN]]]]); //创建一个数组并赋值
2 番目のメソッドは配列を作成して長さを指定しますが、実際には配列はすべての場合において可変長であることに注意してください。つまり、長さが 5 に指定されている場合でも、要素は依然として可変長である可能性があります。それ以外の場合は、長さが変更されることに注意してください。
2. 配列要素へのアクセス
var testGetArrValue=arrayObj[1] //配列の要素値を取得します
arrayObj[1]= "これは新しい値です" // 配列要素に新しい値を割り当てます
3. 配列要素の追加
コード
arrayObj. push([item1 [item2 [. . . [itemN ]]]]);// 将一个或多个新元素添加到数组结尾,并返回数组新长度 arrayObj.unshift([item1 [item2 [. . . [itemN ]]]]);// 将一个或多个新元素添加到数组开始,数组中的元素自动后移,返回数组新长度 arrayObj.splice(insertPos,0,[item1[, item2[, . . . [,itemN]]]]);//将一个或多个新元素插入到数组的指定位置,插入位置的元素自动后移,返回""。
4. 配列要素の削除
arrayObj.pop(); //移除最后一个元素并返回该元素值 arrayObj.shift(); //移除最前一个元素并返回该元素值,数组中元素自动前移 arrayObj.splice(deletePos,deleteCount); //删除从指定位置deletePos开始的指定数量deleteCount的元素,数组形式返回所移除的元素
5. 配列のインターセプトとマージ
arrayObj.slice(start, [end]); //end に対応する要素は含まれないので、start 以降の要素はすべて返されます。コピーされる
arrayObj.concat([item1[, item2[, . . . [,itemN]]]]); //複数の配列 (文字列、または配列と文字列の混合も可能) を 1 つの配列に連結し、新しく接続された配列を返します。配列
6. 配列のコピー
arrayObj.slice(0); //配列のコピー配列を返します。
を指しているわけではないことに注意してください。
arrayObj.concat(); // 配列のコピー配列を返します。これは
を指していないことに注意してください。
7. 配列要素の並べ替え
arrayObj.reverse(); // 要素を反転して (最初から最後、最後から前)、配列アドレスを返します
arrayObj.sort(); // 配列要素をソートし、配列アドレスを返します
8. 配列要素の文字列化
arrayObj.join(separator); //配列の各要素の値をセパレータで区切って結合した文字列を返します。
toLocaleString、toString、valueOf: は、一般的には使用されない結合の特殊な使用法と見なすことができます
2. 配列オブジェクトの 3 つの属性
1. 長さ属性
Length 属性は配列の長さ、つまり配列内の要素の数を表します。配列のインデックスは常に 0 から始まるため、配列の上限と下限はそれぞれ 0 と length-1 になります。他のほとんどの言語とは異なり、JavaScript 配列の長さプロパティは可変であるため、特別な注意が必要です。 length 属性がより大きく設定されても、実際には配列全体の状態は変化しません。length 属性が元の値よりも小さく設定されている場合、元の配列内の要素のインデックスがそれ以上になるだけです。長さはすべての値が失われます。以下は、長さ属性の変更を示す例です:
コード
var arr=[12,23,5,3,25,98,76,54,56,76]; //定义了一个包含10个数字的数组 alert(arr.length); //显示数组的长度10 arr.length=12; //增大数组的长度 alert(arr.length); //显示数组的长度已经变为12 alert(arr[8]); //显示第9个元素的值,为56 arr.length=5; //将数组的长度减少到5,索引等于或超过5的元素被丢弃 alert(arr[8]); //显示第9个元素已经变为"undefined" arr.length=10; //将数组长度恢复为10 alert(arr[8]); //虽然长度被恢复为10,但第9个元素却无法收回,显示"undefined"
上記のコードから、length 属性の性質がはっきりとわかります。ただし、長さオブジェクトは明示的に設定できるだけでなく、暗黙的に変更することもできます。同様に、JavaScript で未定義の変数を使用することもできます (長さ以上のインデックスを持つ要素を参照します)。この場合、length 属性の値は に設定されます。使用される要素インデックスの値に 1 を加算します。たとえば、次のコード:
var arr=[12,23,5,3,25,98,76,54,56,76]; alert(arr.length); arr[15]=34; alert(arr.length);
このコードでは、最初に 10 個の数値を含む配列も定義されています。アラート ステートメントから、その長さが 10 であることがわかります。次に、インデックス 15 の要素が使用され、値 15、つまり arr[15]=34 が割り当てられます。このとき、alert ステートメントは配列の長さを出力するために使用され、結果は 16 になります。いずれにしても、これは、厳密に型指定されたプログラミングに慣れている開発者にとっては驚くべき機能です。実際、 new Array() を使用して作成された配列の初期の長さは 0 です。配列の長さが変化するのは、未定義の要素の操作です。
上記の紹介からわかるように、length 属性は非常に魔法のようなもので、これを使用すると配列の容量を簡単に増減できます。したがって、length 属性を深く理解すると、開発プロセス中にそれを柔軟に使用するのに役立ちます。
2. プロトタイプ属性
オブジェクト型のプロトタイプへの参照を返します。プロトタイププロパティはオブジェクトに共通です。
オブジェクト名.プロトタイプ
objectName パラメータは、オブジェクト オブジェクトの名前です。
説明:
プロトタイプ プロパティを使用して、オブジェクトのクラスに基本的な機能セットを提供します。 オブジェクトの新しいインスタンスは、オブジェクトのプロトタイプに割り当てられた操作を「継承」します。
配列オブジェクトの場合、次の例は、prototype 属性の使用法を示しています。
配列内の最大要素値を返すメソッドを配列オブジェクトに追加します。これを実現するには、関数を宣言し、それを Array.prototype に追加して使用します。
コード
function array_max() { var i, max = this[0]; for (i = 1; i < this.length; i++) { if (max < this[i]) max = this[i]; } return max; } Array.prototype.max = array_max; var x = new Array(1, 2, 3, 4, 5, 6); var y = x.max();
このコードが実行されると、y は配列 x の最大値、つまり 6 を保持します。
3. コンストラクター属性
はオブジェクトを作成する関数を表します。
object.constructor //object はオブジェクトまたは関数の名前です。
説明: コンストラクター プロパティは、プロトタイプを持つすべてのオブジェクトのメンバーです。これらには、Global オブジェクトと Math オブジェクトを除くすべての JScript ネイティブ オブジェクトが含まれます。コンストラクター プロパティは、特定のオブジェクト インスタンスを構築する関数への参照を保持します。
例:
x = 新しい文字列("Hi");
if (x.constructor == String) // 処理(条件が true の場合)。
または
関数 MyFunc {
// 関数本体。
}
y = 新しい MyFunc;
if (y.constructor == MyFunc) // 処理(条件が true の場合)。
配列の場合:
y = 新しい配列();