JavaScriptでは、配列コンストラクターを使用して配列を作成するか、[]を使用して迅速に作成できます。これも優先方法です。アレイはオブジェクトから継承されたプロトタイプであり、TypeOFの特別な返品値はなく、「オブジェクト」のみを返します。
1。ARRAY.PROTOTYPE.SLICEメソッド
通常、配列のスライス方法は、配列からフラグメントを抽出するために使用されます。ただし、「クラスアレイ」(引数やHTMLCollectionなど)を実際のアレイに変換する機能もあります。
コードコピーは次のとおりです。
var nodesarr = array.prototype.slice.call(document.forms);
var argsarr = array.prototype.slice.call(arguments);
アレイのスライス方法がこのようなスキルを持っている理由と、JavaScriptエンジンにどのように実装されているのか興味がありましたか?スライスの兄弟方法にはそのようなスキルがありますか?
好奇心を持って、GoogleのV8 JavaScriptエンジンソースコードをローカルエリアにダウンロードしてください。 V8ソースコードのダウンロードアドレスは、https://github.com/v8/v8です。
v8-master/src/array.jsで「array.prototype.slice」を見つけます:
コードコピーは次のとおりです。
関数arrayslice(start、end){
check_object_coercible(this、 "array.prototype.slice");
...
var result = []; //この文が鍵です
if(end_i <start_i)return result;
if(usesparsevariant(array、len、is_array(array)、end_i -start_i)){
...
Sparseslice(array、start_i、end_i -start_i、len、result);
} それ以外 {
simpleslice(array、start_i、end_i -start_i、len、result);
}
...
返品結果;
次に、「クラスアレイ」を呼び出すSimpleSliceメソッドを使用し、ソースコードで「simpleslice」を検索し、SimpleSliceメソッドがArray.prototype.spliceのソースコードでも呼ばれ、結果変数も空の配列に初期化されることを発見したと思います。ただし、スプライスメソッドを使用して「クラスアレイ」を実際のアレイに変換する場合は、開始位置パラメーターを0に渡す必要があります。つまり、次のとおりです。
コードコピーは次のとおりです。
var nodesarr = array.prototype.splice.call(document.forms、0);
その実装の原則は、削除された配列アイテムによって新しい配列を形成することであるためです。興味がある場合は、array.prototype.spliceのソースコード実装を確認できます。
さらに、スライスは配列をクローンすることもできます。
コードコピーは次のとおりです。
var arr = [1、2、3];
var clonearr = arr.slice(); // clonearr:[1、2、3]
2。array.prototype.pushメソッド
プッシュメソッドを使用して配列をマージします。
コードコピーは次のとおりです。
var arr1 = [1、 'str'、{name: 'lang'}];
var arr2 = [2、 'ing'];
array.prototype.push.apply(arr1、arr2);
// return result:[1、 "str"、{name: 'lang'}、2、 "ing"]
3。ARRAY.PROTOTYPE.SORTメソッド
最初にコードをアップロードします。
コードコピーは次のとおりです。
var arr = ['1'、 '2'、 '10'、 '12'];
arr.sort();
// return result:["1"、 "10"、 "12"、 "2"]]
上記の結果は通常、私たちが望むものではないので、数値サイズでどのように並べ替えますか:
コードコピーは次のとおりです。
arr.sort(function(a、b){
a -bを返します。
})
// return result:["1"、 "2"、 "10"、 "12"]]
ソートコンパレータ機能を使用すると、多くのコンパレータをカスタマイズして、パーソナライズされたソートを実現できます。
4。長さ属性
配列の長さの属性は読み取り専用ではありません。つまり、書き込めることができます。たとえば、長さ属性を使用して、配列を切り捨てます。
コードコピーは次のとおりです。
var arr = [1、2、3、4];
arr.length = 2;
// arr:[1、2]
arr.length = 0;
// arr:[]
同時に、長さの属性が増加すると、配列の長さ値が増加し、未定義が埋める新しい要素として使用されます。
コードコピーは次のとおりです。
var arr = [];
arr.length = 3;
// arr:[未定義、未定義、未定義]
さて、この日を終えましょう。もう早朝です。将来的に新しい発見がある場合は、ここに追加します。
以前は、ブログを書く習慣はありませんでしたが、Youdaoyunのメモに通常の要約を入れることに慣れていました。他の人がそれをよりよく理解できるように、それを表現する方法を検討しなければならなかったので、私の意見を書き出すのにいくつかの考えが必要だとは思っていませんでした。
あなたが間違った表現や間違った理解を持っているなら、私は誰もがあなたが私を修正するのを手伝うことを願っています。
また、いくつかの一般的に使用されるJavaScriptアレイメソッドも添付されています
concat()は2つ以上の配列を連結し、結果を返します。
[Join()]配列のすべての要素を文字列に入れます。要素は、指定された区切り文字によって分離されます。
pop()アレイの最後の要素を削除して返します
push()は、1つ以上の要素を配列の端に追加し、新しい長さを返します。
Reverse()Reverse()は、配列内の要素の順序を逆転させます。
shift()アレイの最初の要素を削除して返します
slice()は、既存の配列から選択した要素を返します
sort()アレイの要素をソートします
Splice()は要素を削除し、配列に新しい要素を追加します。
tosource()オブジェクトのソースコードを返します
toString()は配列を文字列に変換し、結果を返します。
tolocalestring()は、配列をローカル配列に変換し、結果を返します。
unshift()は、配列の先頭に1つ以上の要素を追加し、新しい長さを返します。
valueof()は、配列オブジェクトの元の値を返します