Core JavaScript 1.5 Reference:Global Objects:Array:slice
出典: MDC
目次 |
[編集] 概要
配列の一部を取り出して新しい配列を返します。
| Array のメソッド | |
| 実装されたバージョン: | JavaScript 1.2, NES 3.0 |
| ECMA バージョン: | ECMA-262 Edition 3 |
[編集] 構文
slice(begin[, end])
[編集] 引数
-
begin - どこから取り出すかを示す 0 から始まる添字。
-
startは負の添字を使って、配列の終わりからのオフセットを表すことができます。slice(-2)は配列の最後から 2 番目の要素と最後の要素を取り出します。
-
end - どこまで取り出すかを示す 0 から始まる添字。
sliceはend自体は含めず、その直前まで取り出します。 -
slice(1, 4)は 2 番目の要素から 4 番目の要素まで (添字が 1, 2, 3 の要素) を取り出します。 -
endは負の添字を使って、配列の終わりからのオフセットを表すことができます。slice(2, -1)は配列の 3 番目の要素から、最後から 2 番目の要素まで取り出します。 -
endが省略された場合、sliceは配列の最後まで取り出します。
[編集] 説明
slice は元の配列を変更しませんが、元の配列から取り出された要素のコピーを含む "1 段階深い" コピーを返します。元の配列の要素は以下のようにして新しい配列にコピーされます。
- オブジェクトの参照 (実際のオブジェクトではなく) については、
sliceはオブジェクトの参照を新しい配列にコピーします。元の配列も新しい配列も同じオブジェクトを参照します。もし参照されたオブジェクトが修正されたら、その変更は新しい配列と元の配列の両方に現れます。
- 文字列や数値 (String オブジェクトや Number オブジェクトではなく) については、
sliceは文字列や数値を新しい配列にコピーします。一方の配列の文字列や数値に変更を加えても、他方の配列に影響はしません。
一方の配列に新しい要素が追加されても、他方の配列に影響はしません。
[編集] 例
[編集] 例: slice を使う
以下の例で、slice は myCar から新しい配列 newCar を生成します。両者ともオブジェクト myHonda への参照を含んでいます。myHonda の色が purple に変更されたとき、両方の要素がその変更を反映します。
// slice を使って、myCar から newCar を生成する。
var myHonda = { color: "red", wheels: 4, engine: { cylinders: 4, size: 2.2 } };
var myCar = [myHonda, 2, "cherry condition", "purchased 1997"];
var newCar = myCar.slice(0, 2);
// myCar, newCar と両方の要素から参照されている myHonda の color の
// 値を書きだす。
print("myCar = " + myCar.toSource());
print("newCar = " + newCar.toSource());
print("myCar[0].color = " + myCar[0].color);
print("newCar[0].color = " + newCar[0].color);
// myHonda の色を変える。
myHonda.color = "purple";
print("The new color of my Honda is " + myHonda.color);
// 両方の要素から参照されている myHonda の color を書き出す。
print("myCar[0].color = " + myCar[0].color);
print("newCar[0].color = " + newCar[0].color);
このスクリプトは次のように書き出します。
myCar = [{color:"red", wheels:4, engine:{cylinders:4, size:2.2}}, 2, "cherry condition", "purchased 1997"]
newCar = [{color:"red", wheels:4, engine:{cylinders:4, size:2.2}}, 2]
myCar[0].color = red
newCar[0].color = red
The new color of my Honda is purple
myCar[0].color = purple
newCar[0].color = purple