JS 配列操作のプッシュ、ポップ、シフト、アンシフトなどのメソッドは、detail_javascript スキルで紹介されています。

WBOY
リリース: 2016-05-16 17:44:58
オリジナル
1377 人が閲覧しました

jsにはまだまだたくさんの配列操作のメソッドが存在しますが、過去を振り返り新しいことを学ぶという意味でも、今日はそれらをまとめてみようと思い立ちました。ただし、すべての方法を説明するのではなく、いくつかの方法を選択します。

まず、プッシュ メソッドとポップ メソッドについて説明します。これら 2 つのメソッドは配列を末尾からプッシュまたはポップするだけであり、変更は操作された配列に影響します。 Push(args) は、一度に複数の要素をプッシュし、更新された配列の長さを返すことができます。 Pop() 関数は、毎回最後に最後の要素のみをポップアップし、空の配列で Pop() が呼び出された場合は、未定義を返します。 パラメータが配列の場合、配列全体が 1 つの要素として元の配列にプッシュされます。 concat が配列をマージする場合のような「分割現象」は発生しません。以下の例を見てみましょう。

例 1:
var oldArr=[1,2,3] ;
alert(oldArr.push(4,[5,6]))–>5 (ここでは [5,6] のみが 1 つの要素として計算され、更新された配列の長さ 5 が返されます)
この時点では、oldArr–>[1,2,3,4,[5,6]]
alert(oldArr.pop())–>[5,6](最後の要素 [5,6] ] がここに表示されます。 6)
oldArr–>[1,2,3,4]
oldArr.pop()–>4
oldArr.pop()–>3
oldArr .pop()–>2
oldArr.pop()–>1
oldArr.pop()–>未定義 (空の配列ポップアップ)
プッシュとポップについて話した後、 unshift と SHIFT
を見てみましょう。どちらのメソッドも配列の先頭で動作します。他のメソッドは基本的に Push と Pop に似ていますが、IE では unshift メソッドは未定義の

を返します。 例 2 :
var oldArr2=[1,2];
oldArr2.unshift(3)–>未定義
この時点では、oldArr2 は –>[3,1,2]
oldArr2 .shift()–>3
現時点では、oldArr2 は [1,2]
より強力なスプライスを見てみましょう。これは、配列内のランダムな位置で要素を追加および削除するために使用できます。その動作もオリジナルにあります

配列に対する変更
splice(start,deleteCnt,args) の start は を意味します。開始操作の添字、deleteCnt は開始添字 (要素を含む) から開始して削除することを意味し、要素の数、削除操作は削除された要素を返します。 args は、削除された要素を置き換えるために使用される要素を表します (複数のパラメータを持つことができます)。start および deleteCnt は数値でなければなりません。変換が失敗した場合は、0 として扱われます。スプライスには少なくとも 1 つの開始要素が必要です。そうでない場合、操作は実行されません。 deleteCnt がない場合は、開始要素と後続のすべての要素が削除されることを意味します (IE では 0 は削除されません)。 start には負の数を指定できます。これは、配列の右側の末尾から開始することを意味します。 deleteCnt が負の場合、負の要素を削除することはできないため、削除は実行されません。
説明は終わりましたので、例を見てみましょう。

例 3:
var oldArr3=[ 1,2];
oldArr3.splice()–>””(oldArr3–>[1,2] の操作の後は空の文字列を返し、何も実行しません)
oldArr3.splice( “”)–>[1,2]("" は数値への変換に失敗し、0 を返したので、操作後に 1,2,oldArr3–>[] を削除しますが、IE では少し不快です。何も操作しません)
oldArr3.splice(" 1a")–>同上
odlArr3.splice(0,2)–>[1,2]("添字0の要素から開始、2 つの要素 1,2 を削除するため、削除後は oldArr3–> [])
oldArr3.splice(0,-1)–>””(添字 0 から始まる -1 要素を削除するため、操作は行われません操作後、 oldArr3–>[1,2] )
oldArr3.splice(1,1)–>2 (インデックス 1 から始まる 1 つの要素、つまり 2 を削除します。したがって、削除後、 oldArr3–>[1])
oldArr3.splice(1 ,4)–>2 (添字 1 から始まる 4 つの要素を削除し、1 から始まる要素は 1 つしかないため、2 を削除します。つまり、削除後、 oldArr3–>[1])
oldArr3.splice(-1, 0,3)–>""(要素 2 である添字 -1 から始まる 0 要素を削除し、要素 3 を追加します。操作 oldArr3–>[1,3,2])
oldArr3.splice (-1,1,3)–>2 (添字 -1 から始まる 1 要素 (2 要素) を削除し、追加します要素 3. 操作後は、oldArr3–>[1,3])
OK 次に、concat から始めましょう。このメソッドは、2 つ以上の配列を接続するために使用されます。配列は元の配列を変更しません。接続中にパラメータが配列の場合のみ、新しい配列を返します。この例を直接開始するのは比較的簡単です

: var oldArr4=[1,2];
oldArr4.concat(3,4)–>[1,2 ,3,4]
oldArr4.concat(3,4,[5,6] )–>[1,2,3,4,5,6](ここで追加されるのは[5,6]要素5と要素6です)
oldArr4.concat(3,[4,[5,6] ]])–>[1,2,3,4,[5,6]](ここでは最も内側の層です。要素 [5,6] 全体は分割ではなく追加に使用されます)
について話しましょう配列のソートメソッド sort
sort(function) は元の配列をソートするものであり、新しい配列は生成されません。デフォルトでは、パラメータを指定しない sort() は、比較のために配列内の要素を文字列に変換し、文字は文字エンコーディングの順序に従って並べ替えられます。

Look at the following example
var oldArr5=[3,1,5,7,17] Looking at this general concept, when sorting oldArr5, oldArr5.sort() will follow Sorting the numbers from small to large returns [1,3,5,7,17], but if you look at the result, it actually returns [1,17,3,5,7] because they are converted into strings during comparison. Then compare the strings one by one. If the first character is the same, compare the second character. Otherwise, the comparison result will be returned directly. Because "17"<"3", it is conceivable that the sorting result is not what you usually think. That came to fruition.

In addition to the default no parameters, the sort(function) method can also pass in a custom sorting method. In this way, the sorting results can be completely controlled by yourself. You can sort them however you want. Isn’t it great? Ah, hehe. Generally, a custom function comparison function contains two parameters representing the left element and the right element used for comparison. Then a result is returned in a certain way. If the return value is greater than 0, it means that the left and right elements are exchanged. If the return value is less than 0 or equal to 0, it means that the left and right elements will not be exchanged. Now look at the example

Example 5:
Arrange the original array according to the numbers from large to small

Copy code The code is as follows:

var oldArr5=[3,1,5,7,17]; //Initial array
function mySort(left,right) {
if(leftreturn 1;}//If the left element is less than the right element, exchange the two numbers
else{
return -1;}//If the left element is greater than or equal to The elements on the right are not exchanged
}

Of course the above method can be simplified to funaction mySort(left,right){ return right-left;}
Copy code The code is as follows:

//Sort by even numbers first and odd numbers last
var oldArr6=[3,6,7, 18];//Initial array
function mySort2(left,right){
if(left%2==0)return -1;//If the left element is an even number, no exchange is done
if(right %2==0)return 1; //If the right element is an even number, exchange
return 0; //Do not exchange
}

I won’t talk much about the last slice, just use To intercept some elements in the original array and return a new array. The original array will not change. Its operation method is similar to the slice of string
Copy code The code is as follows:

var oldArr7=[1,2,3,4];
oldArr7.slice(0)–>[1,2,3,4 ]
oldArr7.slice(0,2)–>[1,2]
oldArr7.slice(0,0)–>[]
oldArr7.slice(0,-1)–> ;[1,2,3]
oldArr7.slice(-3,-1)–>[2,3]
oldArr4.slice(-1,-3)–[]

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