2009-06-04 14 views
56

Linqには、Take()と呼ばれる便利な演算子メソッドがあり、IEnumerableを実装するものの任意の数の要素を返すことができます。配列を扱うためのjQueryに似たものはありますか?JavaScriptを使って簡単に配列を切り捨てる方法は?

+16

みんな、jQueryの前に、JavaScriptを学ぶしてください。明日の質問は "jQueryが配列の横に公開する他のデータ型は何ですか?"という疑問があります。 –

答えて

109

slice方法

array.slice(0, 4); 

は、最初の4つの要素を返しますがあります。

他の値を破棄する場合は、変数に変数を割り当てるのを忘れないでください。

注:これは通常のjavascriptであり、jqueryの必要はありません。

+1

完璧なおかげでBob。 –

+13

Wouldnt(0,4)は最初の5ではなく最初の4を返しますか? –

+10

これは実際には真実ではありません。 Simon Keepは正しいです - 。slice()メソッドの2番目の引数は、返される最後の要素の後の配列位置*です。 array.slice(0、4)は要素0,1,2、および3を返します。合計4要素です。 2番目の引数をカットオフポイントと考えてください。ここでは、.slice(0、x)は配列の先頭からすべての要素を返します。 – Bungle

4

要素を取得してアレイから削除する場合は、spliceを使用します。

あなたは選択の配列のうちの要素を引きたい場合は、あなたがjQuery.grepメソッドを使用することができますslice

2

を使用し、配列の要素を保持する場合。 (jQueryのドキュメントから)

var arr = [ 1, 9, 3, 8, 6, 1, 5, 9, 4, 7, 3, 8, 6, 9, 1 ]; 

$("div").text(arr.join(", ")); 

arr = jQuery.grep(arr, function(n, i){ 
    return (n != 5 && i > 4); 
}); 

$("p").text(arr.join(", ")); 

arr = jQuery.grep(arr, function (a) { return a != 9; }); 
$("span").text(arr.join(", ")); 
18

あなたは切り捨てる(末尾から要素を取り除くことによって、配列を変更)を使用する方法を求めている場合はsplice

var a1 = [2,4,6,8]; 
var a2 = a1.splice(-2,2); // a1=[2,4], a2=[6,8] 

あなたの場合オリジナルを変更せずに配列のサブセットを取得する方法を尋ねるなら、sliceを使ってください。

var a1 = [2,4,6,8]; 
var a2 = a1.slice(-2); // a1=[2,4,6,8], a2=[6,8] 

スプライスがスライスアクセスを変更することを覚えておいてください。最初のargとしての負の数は、配列の最後からのインデックスを示します。

85

(2年後...)あなたが本当に配列を切り詰めるために探しているなら、あなたもlength属性を使用することができます:あなたは長い長さを割り当てる場合:

var stooges = ["Moe", "Larry", "Shemp", "Curly", "Joe"]; 
stooges.length = 3; // now stooges is ["Moe", "Larry", "Shemp"] 

注意を現在の長さよりも、未定義の配列要素が導入されています。

var stooges = ["Moe", "Larry", "Shemp"]; 
stooges.length = 5; 
alert(typeof stooges[4]); // alerts "undefined" 

EDIT:

@twhiteheadは、後述するように、未定義の元素の添加は、このようにすることによって回避することができる。

var stooges = ["Moe", "Larry", "Shemp"]; 
stooges.length = Math.min(stooges.length, 5); 
alert(stooges.length)// alerts "3" 
+5

私はこれをコードで見たときに最初に驚いた...しかし、それは最良の方法です(インデックス0から切り捨てる場合)http://davidwalsh.name/empty-array –

+2

これは驚くほど簡単な解決策です。 – Dominique

+2

どうやってガベージコレクションをしていますか? –

8

は低い値に.LENGTHプロパティを設定します。

公式ドキュメント: Array.prototype.length

+3

で配列のすべての要素を消去するには、長さをゼロに設定するのが最も簡単です。 – hanmari

関連する問題