SYNCERのロゴ
アイキャッチ画像

TypedArray.prototype.subarray() - 指定位置から新しいTypedArrayを作る

TypedArray.prototype.subarray()は、TypedArrayの一部を切り取って、新しいTypedArrayを作成します。TypedArrayがバッファ(ArrayBuffer)のビューの場合、元の配列と新しい配列は同じバッファを参照していることになります。

概要

名前
subarray
所属
TypedArray.prototype
仕様書
https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.subarray

説明

%TypedArray%.prototype.subarray( begin, end )

第1引数(begin)には、切り取りの開始位置を指定します。

第2引数(end)には、切り取りの終了位置を指定します。省略した場合、最後まで切り取ります。

開始位置、終了位置は、それぞれ正の数、または負の数で指定できます。区切り線を入れる位置でイメージして下さい。負の数の場合、-0は指定できません。最後まで切り取りたい場合は正の数で指定するか、または値を省略して下さい。

正の数の場合
正の数の場合
負の数の場合 (-0は指定不可)
負の数の場合 (-0は指定不可)

デモ

TypedArray.prototype.subarray()のデモです。同じバッファを参照しているため、メソッドで作成した新しい配列(newTypedArray)と元の配列(typedArray)はリンクしているのを確認できます。subarray()からslice()に変えると、リンクしないのを確認しましょう。

<!-- このコードは編集できます。 -->

<!DOCTYPE html>
<html>
<head>
	<style>
body {
	white-space: pre-wrap ;
}
	</style>
</head>
<body>
<script>
/** try it! **/
var buffer = new ArrayBuffer( 8 ) ;
var typedArray = new Uint8Array( buffer ) ;
var newTypedArray = typedArray.subarray( 2, 6 ) ;

var a = newTypedArray ;

newTypedArray[0] = 0xff ;
newTypedArray[1] = 0xff ;
newTypedArray[2] = 0xff ;
newTypedArray[3] = 0xff ;

var b = typedArray ;
/** try it! **/

var results = { a:a, b:b, } ;

for( var name in results ) {
	console.log( name, results[name] ) ;
	document.body.appendChild( new Text( name + " = " + JSON.stringify( results[name], null, "  " ) + "\n\n" ) ) ;
}
</script>
</body>
</html>

サポート状況

ChromeFirefoxSafariEdgeIEOperaiOS SafariAndroid
5.1+ 10+ 11.6+ 4.0+
  • Twitterでシェア
  • Facebookでシェア
  • Google+でシェア
  • はてなブックマークでシェア
  • pocketに保存
  • LINEでシェア
更新履歴
2017年10月1日 (日)
コンテンツを公開しました。