filter【抽出生成】
map【配列変換生成】
slice【部分コピー】
subarray【部分ビュー】

%TypedArray%.prototype.filter【抽出生成】

メモ

概要

関連

外部リンク

構文

typedArray.filter( callbackfn [, thisArg ] )

 新規生成された %TypedArray%【型指定配列ビュー】オブジェクト (抽出生成用コールバック関数の戻り値が true の要素のみ)
callbackfn 抽出生成用コールバック関数 (詳細は下記参照)
thisArg 抽出生成用コールバック関数内でthis で参照されるオブジェクト

TypeError  callbackfn が呼び出し可能な関数オブジェクト以外
callbackfn (抽出生成用コールバック関数)
引数名 (例)説明
value要素値
index要素インデックス
typedArray%TypedArray%【型指定配列ビュー】オブジェクト
戻り値型説明
Boolean型true:有効な要素
false:無効な要素

/**
* filter 用コールバック関数 (判定値 this 以上を抽出)
 * @param {number}     value      要素値
 * @param {number}     index      要素インデックス
 * @param {Int32Array} typedArray %TypedArray%【型指定配列ビュー】オブジェクト
 * @return {boolean}   true:抽出対象要素 / false:抽出対象要素以外
 */
function filterFunc(value, index, typedArray) {
  console.log("filterFunc()", index, value);
  return (this <= value);
}

var array = [ 1, -2, 3, -4, 5 ];
var typedArray = new Int32Array(array);
var typedArray_0 = typedArray.filter(filterFunc, 0);
console.log(typedArray_0[Symbol.toStringTag], typedArray_0);
// 出力:filterFunc() 0 1
// 出力:filterFunc() 1 -2
// 出力:filterFunc() 2 3
// 出力:filterFunc() 3 -4
// 出力:filterFunc() 4 5
// 出力:Int32Array [1, 3, 5]
var typedArray_3 = typedArray.filter(filterFunc, 3);
console.log(typedArray_3[Symbol.toStringTag], typedArray_3);
// 出力:filterFunc() 0 1
// 出力:filterFunc() 1 -2
// 出力:filterFunc() 2 3
// 出力:filterFunc() 3 -4
// 出力:filterFunc() 4 5
// 出力:Int32Array [3, 5]

// 生成されたビューは別配列
typedArray[2] = 100;
typedArray_0[1] = 200;
console.log(typedArray);
// 出力:[1, -2, 100, -4, 5]
console.log(typedArray_0);
// 出力:[1, 200, 5]
console.log(typedArray_3);
// 出力:[3, 5]

%TypedArray%.prototype.map【配列変換生成】

メモ

概要

関連

外部リンク

構文

typedArray.map( callbackfn [, thisArg ] )

 新規生成された %TypedArray%【型指定配列ビュー】オブジェクト
callbackfn コールバック関数 (詳細は下記参照)
thisArg コールバック関数内でthis で参照されるオブジェクト

TypeError  callbackfn が呼び出し可能な関数オブジェクト以外
callbackfn (コールバック関数)
引数名 (例)説明
value要素値
index要素インデックス
typedArray%TypedArray%【型指定配列ビュー】オブジェクト
戻り値型説明
要素の型変換後の要素値

/**
* map 用コールバック関数 (乗数 this 倍)
 * @param  {number}     value      要素値
 * @param  {number}     index      要素インデックス
 * @param  {Int32Array} typedArray %TypedArray%【型指定配列ビュー】オブジェクト
 * @return {Int32Array}            変換後の要素値
 */
function mapFunc(value, index, typedArray) {
  console.log("mapFunc()", index, value);
  return value * this;
}

var array = [ 1, -2, 3, -4, 5 ];
var typedArray = new Int32Array(array);

var typedArray_2 = typedArray.map(mapFunc, 2);
console.log(typedArray_2[Symbol.toStringTag], typedArray_2);
// 出力:mapFunc() 0 1
// 出力:mapFunc() 1 -2
// 出力:mapFunc() 2 3
// 出力:mapFunc() 3 -4
// 出力:mapFunc() 4 5
// 出力:Int32Array [2, -4, 6, -8, 10]

var typedArray_3 = typedArray.map(mapFunc, 3);
console.log(typedArray_3[Symbol.toStringTag], typedArray_3);
// 出力:mapFunc() 0 1
// 出力:mapFunc() 1 -2
// 出力:mapFunc() 2 3
// 出力:mapFunc() 3 -4
// 出力:mapFunc() 4 5
// 出力:Int32Array [3, -6, 9, -12, 15]

%TypedArray%.prototype.slice【部分コピー】

メモ

概要

関連

外部リンク

構文

typedArray.slice( start [, end ] )

 新規生成された %TypedArray%【型指定配列ビュー】オブジェクト
start 開始要素位置 (詳細は下記参照)
end 終了要素位置 (この位置の要素は含まない:詳細は下記参照)
start (開始要素位置)
start説明
0 ≦ start 先頭からの要素位置
(要素数start要素数に補正)
start < 0末尾からの要素位置
(-1:末尾)
end (終了要素位置)
end説明
省略末尾まで (要素数:末尾+1)
0 ≦ end 先頭からの要素位置
(要素数end要素数に補正)
end < 0 末尾からの要素位置
(-1:末尾)

var array = [ 1, -2, 3, -4, 5 ];
var typedArray = new Int32Array(array);
console.log(typedArray);
// 出力:[1, -2, 3, -4, 5]
// 出力:全コピー
var typedArrayCopy = typedArray.slice(0);
console.log(typedArrayCopy);
// 出力:[1, -2, 3, -4, 5]
console.log(typedArrayCopy === typedArray);
// 出力:false 別のビュー
console.log(typedArrayCopy.buffer === typedArray.buffer);
// 出力:false 別の実体
typedArrayCopy[0] = 100;
console.log(typedArrayCopy);
// 出力:[100, -2, 3, -4, 5]
console.log(typedArray);
// 出力:[1, -2, 3, -4, 5]

// 出力:違う範囲のビュー生成
var typedArrayCopy2 = typedArray.slice(1, 4);
console.log(typedArrayCopy2);
// 出力:[-2, 3, -4]
console.log(typedArrayCopy2 === typedArray);
// 出力:false 別のビュー
console.log(typedArrayCopy2.buffer === typedArray.buffer);
// 出力:false 別の実体

// 出力:末尾からの範囲指定のビュー生成
var typedArrayCopy3 = typedArray.slice(1, -2);
console.log(typedArrayCopy3);
// 出力:[-2, 3]
console.log(typedArrayCopy3 === typedArray);
// 出力:false 別のビュー
console.log(typedArrayCopy3.buffer === typedArray.buffer);
// 出力:false 別の実体

%TypedArray%.prototype.subarray【部分ビュー】

メモ

概要

関連

外部リンク

構文

typedArray.subarray( begin [, end ] )

 新規生成された %TypedArray%【型指定配列ビュー】オブジェクト
begin 開始要素位置 (詳細は下記参照)
end 終了要素位置 (この位置の要素は含まない:詳細は下記参照)
begin (開始要素位置)
begin説明
0 ≦ begin 先頭からの要素位置
(要素数begin要素数に補正)
begin < 0 末尾からの要素位置
(-1:末尾)
end (終了要素位置)
end説明
省略末尾まで (要素数:末尾+1)
0 ≦ end 先頭からの要素位置
(要素数end要素数に補正)
end < 0 末尾からの要素位置
(-1:末尾)

var array = [ 1, -2, 3, -4, 5 ];
var typedArray = new Int32Array(array);
console.log(typedArray);
// 出力:[1, -2, 3, -4, 5]
// 同じ範囲のビュー生成
var typedArray2 = typedArray.subarray(0);
console.log(typedArray2);
// 出力:[1, -2, 3, -4, 5]
console.log(typedArray === typedArray2);
// 出力:false 別ビュー
console.log(typedArray.buffer === typedArray2.buffer);
// 出力:true 同一実体
typedArray2[0] = 100;
console.log(typedArray);
// 出力:[100, -2, 3, -4, 5]
console.log(typedArray2);
// 出力:[100, -2, 3, -4, 5]

// 違う範囲のビュー生成
var typedArray3 = typedArray.subarray(1, 4);
console.log(typedArray3);
// 出力:[-2, 3, -4]
console.log(typedArray === typedArray3);
// 出力:false 別ビュー
console.log(typedArray.buffer === typedArray3.buffer);
// 出力:true 同一実体
typedArray3[0] = -200;
console.log(typedArray);
// 出力:[100, -200, 3, -4, 5]
console.log(typedArray3);
// 出力:[-200, 3, -4]

// 末尾からの範囲指定のビュー生成
var typedArray4 = typedArray.subarray(1, -2);
console.log(typedArray4);
// 出力:[-200, 3]