Array

JavaScript の Array クラスはグローバルオブジェクトで、高水準、リスト風のオブジェクトである配列の構築に使用されます。

解説

配列はリストのようなオブジェクトであり、そのプロトタイプは配列に対して横断的な操作や変更を行うメソッドを持っています。 JavaScript の配列は、要素数も要素の型も固定されていません。配列の長さは常に可変であり、データを連続しない位置に格納できるため、 JavaScript の配列は密であることが保証されていません。これはプログラマーの使い方次第です。一般に、これらは便利な特性です。しかし、もし特定の用途で望ましくないのであれば、型付き配列を使用したほうが良いかもしれません。

配列は (連想配列のように) 要素の添字に文字列を使うことはできず、整数を使う必要があります。整数以外によってブラケット構文 (またはドット構文) を使用して設定やアクセスを行うと、配列のリスト自身の要素を設定したり取得したりすることはできませんが、その配列のオブジェクトプロパティ集合に関連付けられた変数に設定またはアクセスすることになります。配列のオブジェクトプロパティと配列リストの要素は異なり、配列の走査や変更の操作を名前付きプロパティに適用することはできません。

よくある操作

配列を作成する

let fruits = ['りんご', 'バナナ']

console.log(fruits.length)
// 2

位置を使用して配列にアクセスする

let first = fruits[0]
// りんご

let last = fruits[fruits.length - 1]
// バナナ

配列のループ処理

fruits.forEach(function(item, index, array) {
  console.log(item, index)
})
// りんご 0
// バナナ 1

配列の末尾に要素を追加する

let newLength = fruits.push('みかん')
// ["りんご", "バナナ", "みかん"]

配列の末尾の要素を削除する

let last = fruits.pop() // 配列の末尾の要素 "みかん" を削除
// ["りんご", "バナナ"]

配列の先頭の要素を削除する

let first = fruits.shift() // 配列の先頭の要素"りんご" を削除
// ["バナナ"]

配列の先頭に要素を追加する

let newLength = fruits.unshift('いちご') // 配列の先頭に追加
// ["いちご", "バナナ"]

要素の添字を取得する

fruits.push('マンゴー')
// ["いちご", "バナナ", "マンゴー"]

let pos = fruits.indexOf('バナナ')
// 1

位置を指定して要素を削除する

let removedItem = fruits.splice(pos, 1) // 要素を削除する方法

// ["いちご", "マンゴー"]

位置から複数の要素を削除する

let vegetables = ['キャベツ', 'かぶ', '大根', 'にんじん']
console.log(vegetables)
// ["キャベツ", "かぶ", "大根", "にんじん"]

let pos = 1
let n = 2

let removedItems = vegetables.splice(pos, n)
// 複数の要素を削除するには、 n で削除する要素数を定義します
// 指定位置(pos)以降から n 個分の要素が削除されます

console.log(vegetables)
// ["Cabbage", "Carrot"] (元の配列が変化)

console.log(removedItems)
// ["Turnip", "Radish"]

配列をコピーする

let shallowCopy = fruits.slice() // 配列のコピーを作成できます
// ["いちご", "マンゴー"]

配列要素へのアクセス

JavaScript の配列の添字は 0 から始まるので、配列の最初の要素は添字 0 の位置にあります。そして、最後の要素のインデックスは length プロパティの値から 1 を引いた値になります。

不正なインデックス番号を使った場合は undefined を返します。

let arr = ['最初の要素', '2 番目の要素', '最後の要素']
console.log(arr[0])              // ログ : "最初の要素"
console.log(arr[1])              // ログ : "2 番目の要素"
console.log(arr[arr.length - 1]) // ログ : "最後の要素"

toString が一つのプロパティであるのと同様に (ただし厳密には toString() はメソッドですが)、配列における配列要素はオブジェクトのプロパティです。しかし、次のように配列にアクセスしようとすると、プロパティ名が妥当でないため、構文エラーが発生します。

console.log(arr.0) // 構文エラー

これは、JavaScript の配列とそのプロパティに限った話ではありません。数字から始まるプロパティは、ドット演算子を用いて参照できないため、ブラケット記法を用いる必要があります。

例えば 3d というプロパティを持つオブジェクトがあった場合は、ドット記法ではなくブラケット記法を用いて参照しなければなりません。

let years = [1950, 1960, 1970, 1980, 1990, 2000, 2010]
console.log(years.0)   // 構文エラー
console.log(years[0])  // 正しく動作
renderer.3d.setTexture(model, 'character.png')     // 構文エラー
renderer['3d'].setTexture(model, 'character.png')  // 正しく動作

3d の例では、'3d' は引用符で括らなければならないことに注意してください。 JavaScript 配列の添字も同様に引用符でくくることができますが (例えば years[2] でなく years['2'])、そうする必要はないでしょう。

years[2] の 2 は最終的に、JavaScript エンジンが内部的に toString メソッドで型変換することで文字列にされます。これは '2' と '02' が years オブジェクトの異なる場所を指すようにするためでです。このため、以下の例は true がログ出力されます。

console.log(years['2'] != years['02'])

length と数値プロパティとの関係

JavaScript の配列の length プロパティと数値プロパティは関連しています。

配列の一部の組込みメソッド (例えば join(), slice(), indexOf(), など) は、配列の length プロパティの値はメソッドの呼び出し時の値を考慮します。

他にも (例えば push(), splice(), 等)、結果として配列の length プロパティを更新するメソッドがあります。

var fruits = []
fruits.push('バナナ', 'りんご', 'もも')

console.log(fruits.length) // 3

JavaScript の配列に、配列の添字として妥当なプロパティであり、かつ現在の配列の範囲の外にある添字を設定すると、エンジンは配列の length プロパティを更新します。

fruits[5] = 'マンゴー'
console.log(fruits[5])            // 'マンゴー'
console.log(Object.keys(fruits))  // ['0', '1', '2', '5']
console.log(fruits.length)        // 6

length を増加させてみます。

fruits.length = 10
console.log(fruits)              // ['バナナ', 'りんご', 'もも', undefined, 'マンゴー', <5 empty items>]
console.log(Object.keys(fruits)) // ['0', '1', '2', '5']
console.log(fruits.length)       // 10
console.log(fruits[8])           // undefined

一方、 length プロパティの数を減らすと、要素が削除されます。

fruits.length = 2
console.log(Object.keys(fruits)) // ['0', '1']
console.log(fruits.length)       // 2

これらについては Array.length のページで詳しく解説します。

match の結果を利用して配列を作成

正規表現 (RegExp) と文字列の一致の結果から配列を生成することができます。この配列には、プロパティと、一致した者に関する情報を提供する要素を持ちます。このような配列は RegExp.exec(), String.match(), String.replace() から返されます。

これらのプロパティと要素を理解しやすくするために、以下の例と表を参照してください。

/ 1文字の d と、続く1文字以上の b と、続く1文字の d に一致します
// 一致した b およびそれに続く d を記憶します
// 大文字小文字は区別しません

const myRe = /d(b+)(d)/i
const myArray = myRe.exec('cdbBdbsbz')

この一致から返されるプロパティと要素は次の通りです。

プロパティまたは要素 説明
input
読取専用
正規表現が一致の文字列を反映する読み取り専用プロパティです。 "cdbBdbsbz"
index
読取専用
文字列中で一致場所を、0 から始まる位置で示します。 1
[0]
読取専用
最後にマッチした文字列です。 "dbBd"
[1], ...[n]
読取専用
正規表現に含まれる場合、括弧で囲まれた一致た部分文字列を指定する読み取り専用の要素です。括弧で囲まれた部分文字列の数は無制限です。 [1]: "bB"
[2]: "d"

コンストラクター

Array()
新しい Array オブジェクトを生成します。

静的プロパティ

get Array[@@species]
コンストラクター関数。派生オブジェクトを生成する時に使われます。

静的メソッド

Array.from()
配列風 (array-like) または反復可能 (iterable) オブジェクトから新しい Array インスタンスを生成します。
Array.isArray()
配列であれば true を、配列でなければ false を返します。
Array.of()
可変個の引数から、引数の個数や型に関わらず、新しい Array インスタンスを生成します。

インスタンスプロパティ

Array.prototype.length
配列内の要素数を反映します。
Array.prototype[@@unscopables]
with バインディングのスコープから除外されるプロパティ名を保持するシンボル。

インスタンスメソッド

Array.prototype.concat()
この配列に他の配列や値を結合して新しい配列を返します。
Array.prototype.copyWithin()
配列内で配列内の連続した要素をコピーします。
Array.prototype.entries()
新しい Array Iterator オブジェクトを返します。このオブジェクトは、配列中の各インデックスに対する key/value ペアを保持しています。
Array.prototype.every()
指定したテスト関数を配列中のすべての要素が満たした場合に true を返します。
Array.prototype.fill()
配列内の指定した開始位置から終了位置までの要素を固定値で埋めます。
Array.prototype.filter()
指定したフィルタリング関数が true を返す、配列中の要素を格納した新しい配列を生成します。
Array.prototype.find()
指定したテスト関数を満たす、配列中の要素の値を返します。1 個も見つからない場合は undefined を返します。
Array.prototype.findIndex()
指定したテスト関数を満たす、配列中の要素のインデックスを返します。1 個も見つからない場合は -1 を返します。
Array.prototype.forEach()
配列中のそれぞれの要素について関数を呼び出します。
Array.prototype.includes()
この配列が特定の要素を含むかどうか判定し、その結果を true または false で返します。
Array.prototype.indexOf()
指定された値と等しい値を持つ最初の (添字の一番小さい) 要素の添字を返します。見つからない場合、-1 を返します。
Array.prototype.join()
配列のすべての要素を結合した文字列を返します。
Array.prototype.keys()
新しい Array Iterator を返します。このオブジェクトは配列中の各添字のキーを保持します。
Array.prototype.lastIndexOf()
指定された値と等しい値を持つ最後の (添字の一番大きい) 要素の添字を返します。見つからない場合、-1 を返します。
Array.prototype.map()
配列内のすべての要素に対して与えられた関数を呼び出し、その結果を格納した新しい配列を生成します。
Array.prototype.pop()
配列から最後の要素を取り除き、返値として返します。
Array.prototype.push()
配列の最後に 1 個以上の要素を追加し、新しい配列の length を返します。
Array.prototype.reduce()
アキュムレーターと配列内のすべての要素に対して (左から右の順で) 関数を適用し、単一の値に還元します。
Array.prototype.reduceRight()
アキュムレーターと配列内のすべての要素に対して (右から左の順で) 関数を適用し、単一の値に還元します。
Array.prototype.reverse()
配列の要素の順番を逆転させます (最初の要素は最後に、最後の要素は最初になります)。
Array.prototype.shift()
配列から最初の要素を取り除き、その要素を返します。
Array.prototype.slice()
配列の一部を取り出して新しい配列として返します。
Array.prototype.some()
指定したテスト関数を配列中の少なくとも 1 個の要素が満たした場合に true を返します。
Array.prototype.sort()
配列内で要素を整列し、配列を返します。
Array.prototype.splice()
配列に対して複数の要素を追加したり取り除いたりします。
Array.prototype.toLocaleString()
配列とその要素を表すロケールに従った文字列を返します。Object.prototype.toLocaleString() メソッドを上書きします。
Array.prototype.toString()
配列とその要素を表す文字列を返します。Object.prototype.toString() メソッドを上書きしています。
Array.prototype.unshift()
配列の最初に 1 個以上の要素を追加し、配列の変更後の length を返します。
Array.prototype.values()
新しい Array Iterator オブジェクトを返します。このオブジェクトは、配列中の各添字の値を保持します。
Array.prototype[@@iterator]()
新しい Array Iterator オブジェクトを返します。このオブジェクトは、配列中の各添字の値を保持します。

配列の生成

次の例では、 msgArray を長さ 0 で生成し、 msgArray[0]msgArray[99] に値を設定、その後配列の length100 である事を確認しています。

let msgArray = []
msgArray[0] = 'Hello'
msgArray[99] = 'world'

if (msgArray.length === 100) {
  console.log("配列の length は 100 です。")
}

2 次元配列を生成する

以下では、文字列の 2 次元配列としてチェスボードを生成しています。最初の動きは 'p'board[6][4] から board[4][4] にコピーすることでなされます。古い位置 [6][4] は空白にされます。

let board = [ 
  ['R','N','B','Q','K','B','N','R'],
  ['P','P','P','P','P','P','P','P'],
  [' ',' ',' ',' ',' ',' ',' ',' '],
  [' ',' ',' ',' ',' ',' ',' ',' '],
  [' ',' ',' ',' ',' ',' ',' ',' '],
  [' ',' ',' ',' ',' ',' ',' ',' '],
  ['p','p','p','p','p','p','p','p'],
  ['r','n','b','q','k','b','n','r'] ]

console.log(board.join('\n') + '\n\n')

// キングの前のポーンを 2 つ前へ移動
board[4][4] = board[6][4]
board[6][4] = ' '
console.log(board.join('\n'))

出力を以下に示します。

R,N,B,Q,K,B,N,R
P,P,P,P,P,P,P,P
 , , , , , , , 
 , , , , , , , 
 , , , , , , , 
 , , , , , , , 
p,p,p,p,p,p,p,p
r,n,b,q,k,b,n,r

R,N,B,Q,K,B,N,R
P,P,P,P,P,P,P,P
 , , , , , , , 
 , , , , , , , 
 , , , ,p, , , 
 , , , , , , , 
p,p,p,p, ,p,p,p
r,n,b,q,k,b,n,r

配列を使って値のセットを表にする

values = []
for (let x = 0; x < 10; x++){
 values.push([
  2 ** x,
  2 * x ** 2
 ])
}
console.table(values)

結果は次のようになります。

0	1	0
1	2	2
2	4	8
3	8	18
4	16	32
5	32	50
6	64	72
7	128	98
8	256	128
9	512	162

(最初の列は要素の添字です)

仕様書

仕様書 初回発行
ECMAScript (ECMA-262)
Array の定義
ECMAScript 1

ブラウザーの互換性

Update compatibility data on GitHub
デスクトップモバイルサーバー
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung InternetNode.js
ArrayChrome 完全対応 1Edge 完全対応 12Firefox 完全対応 1IE 完全対応 4Opera 完全対応 4Safari 完全対応 1WebView Android 完全対応 ≤37Chrome Android 完全対応 18Firefox Android 完全対応 4Opera Android 完全対応 10.1Safari iOS 完全対応 1Samsung Internet Android 完全対応 1.0nodejs 完全対応 0.1.100
Array() constructorChrome 完全対応 1Edge 完全対応 12Firefox 完全対応 1IE 完全対応 4Opera 完全対応 4Safari 完全対応 1WebView Android 完全対応 ≤37Chrome Android 完全対応 18Firefox Android 完全対応 4Opera Android 完全対応 10.1Safari iOS 完全対応 1Samsung Internet Android 完全対応 1.0nodejs 完全対応 0.1.100
concatChrome 完全対応 1Edge 完全対応 12Firefox 完全対応 1IE 完全対応 5.5Opera 完全対応 4Safari 完全対応 1WebView Android 完全対応 1Chrome Android 完全対応 18Firefox Android 完全対応 4Opera Android 完全対応 10.1Safari iOS 完全対応 1Samsung Internet Android 完全対応 1.0nodejs 完全対応 0.1.100
copyWithinChrome 完全対応 45Edge 完全対応 12Firefox 完全対応 32IE 未対応 なしOpera 完全対応 32Safari 完全対応 9WebView Android 完全対応 45Chrome Android 完全対応 45Firefox Android 完全対応 32Opera Android 完全対応 32Safari iOS 完全対応 9Samsung Internet Android 完全対応 5.0nodejs 完全対応 4.0.0
entriesChrome 完全対応 38Edge 完全対応 12Firefox 完全対応 28IE 未対応 なしOpera 完全対応 25Safari 完全対応 8WebView Android 完全対応 38Chrome Android 完全対応 38Firefox Android 完全対応 28Opera Android 完全対応 25Safari iOS 完全対応 8Samsung Internet Android 完全対応 3.0nodejs 完全対応 0.12
everyChrome 完全対応 1Edge 完全対応 12Firefox 完全対応 1.5IE 完全対応 9Opera 完全対応 9.5Safari 完全対応 3WebView Android 完全対応 ≤37Chrome Android 完全対応 18Firefox Android 完全対応 4Opera Android 完全対応 10.1Safari iOS 完全対応 1Samsung Internet Android 完全対応 1.0nodejs 完全対応 0.1.100
fillChrome 完全対応 45Edge 完全対応 12Firefox 完全対応 31IE 未対応 なしOpera 完全対応 32Safari 完全対応 8WebView Android 完全対応 45Chrome Android 完全対応 45Firefox Android 完全対応 31Opera Android 完全対応 32Safari iOS 完全対応 8Samsung Internet Android 完全対応 5.0nodejs 完全対応 4.0.0
完全対応 4.0.0
完全対応 0.12
無効
無効 From version 0.12: this feature is behind the --harmony runtime flag.
filterChrome 完全対応 1Edge 完全対応 12Firefox 完全対応 1.5IE 完全対応 9Opera 完全対応 9.5Safari 完全対応 3WebView Android 完全対応 ≤37Chrome Android 完全対応 18Firefox Android 完全対応 4Opera Android 完全対応 10.1Safari iOS 完全対応 1Samsung Internet Android 完全対応 1.0nodejs 完全対応 0.1.100
findChrome 完全対応 45Edge 完全対応 12Firefox 完全対応 25IE 未対応 なしOpera 完全対応 32Safari 完全対応 8WebView Android 完全対応 45Chrome Android 完全対応 45Firefox Android 完全対応 4Opera Android 完全対応 32Safari iOS 完全対応 8Samsung Internet Android 完全対応 5.0nodejs 完全対応 4.0.0
完全対応 4.0.0
完全対応 0.12
無効
無効 From version 0.12: this feature is behind the --harmony runtime flag.
findIndexChrome 完全対応 45Edge 完全対応 12Firefox 完全対応 25IE 未対応 なしOpera 完全対応 32Safari 完全対応 8WebView Android 完全対応 45Chrome Android 完全対応 45Firefox Android 完全対応 4Opera Android 完全対応 32Safari iOS 完全対応 8Samsung Internet Android 完全対応 5.0nodejs 完全対応 4.0.0
完全対応 4.0.0
完全対応 0.12
無効
無効 From version 0.12: this feature is behind the --harmony runtime flag.
flatChrome 完全対応 69Edge 完全対応 79Firefox 完全対応 62IE 未対応 なしOpera 完全対応 56Safari 完全対応 12WebView Android 完全対応 69Chrome Android 完全対応 69Firefox Android 完全対応 62Opera Android 完全対応 48Safari iOS 完全対応 12Samsung Internet Android 完全対応 10.0nodejs 完全対応 11.0.0
flatMapChrome 完全対応 69Edge 完全対応 79Firefox 完全対応 62IE 未対応 なしOpera 完全対応 56Safari 完全対応 12WebView Android 完全対応 69Chrome Android 完全対応 69Firefox Android 完全対応 62Opera Android 完全対応 48Safari iOS 完全対応 12Samsung Internet Android 完全対応 10.0nodejs 完全対応 11.0.0
forEachChrome 完全対応 1Edge 完全対応 12Firefox 完全対応 1.5IE 完全対応 9Opera 完全対応 9.5Safari 完全対応 3WebView Android 完全対応 ≤37Chrome Android 完全対応 18Firefox Android 完全対応 4Opera Android 完全対応 10.1Safari iOS 完全対応 1Samsung Internet Android 完全対応 1.0nodejs 完全対応 0.1.100
fromChrome 完全対応 45Edge 完全対応 12Firefox 完全対応 32IE 未対応 なしOpera 完全対応 32Safari 完全対応 9WebView Android 完全対応 45Chrome Android 完全対応 45Firefox Android 完全対応 32Opera Android 完全対応 32Safari iOS 完全対応 9Samsung Internet Android 完全対応 5.0nodejs 完全対応 4.0.0
includesChrome 完全対応 47Edge 完全対応 14Firefox 完全対応 43IE 未対応 なしOpera 完全対応 34Safari 完全対応 9WebView Android 完全対応 47Chrome Android 完全対応 47Firefox Android 完全対応 43Opera Android 完全対応 34Safari iOS 完全対応 9Samsung Internet Android 完全対応 5.0nodejs 完全対応 6.0.0
完全対応 6.0.0
完全対応 5.0.0
無効
無効 From version 5.0.0: this feature is behind the --harmony runtime flag.
indexOfChrome 完全対応 1Edge 完全対応 12Firefox 完全対応 1.5IE 完全対応 9Opera 完全対応 9.5Safari 完全対応 3WebView Android 完全対応 ≤37Chrome Android 完全対応 18Firefox Android 完全対応 4Opera Android 完全対応 10.1Safari iOS 完全対応 1Samsung Internet Android 完全対応 1.0nodejs 完全対応 0.1.100
isArrayChrome 完全対応 5Edge 完全対応 12Firefox 完全対応 4IE 完全対応 9Opera 完全対応 10.5Safari 完全対応 5WebView Android 完全対応 1Chrome Android 完全対応 18Firefox Android 完全対応 4Opera Android 完全対応 14Safari iOS 完全対応 5Samsung Internet Android 完全対応 1.0nodejs 完全対応 0.1.100
joinChrome 完全対応 1Edge 完全対応 12Firefox 完全対応 1IE 完全対応 5.5Opera 完全対応 4Safari 完全対応 1WebView Android 完全対応 1Chrome Android 完全対応 18Firefox Android 完全対応 4Opera Android 完全対応 10.1Safari iOS 完全対応 1Samsung Internet Android 完全対応 1.0nodejs 完全対応 0.1.100
keysChrome 完全対応 38Edge 完全対応 12Firefox 完全対応 28IE 未対応 なしOpera 完全対応 25Safari 完全対応 8WebView Android 完全対応 38Chrome Android 完全対応 38Firefox Android 完全対応 28Opera Android 完全対応 25Safari iOS 完全対応 8Samsung Internet Android 完全対応 3.0nodejs 完全対応 0.12
lastIndexOfChrome 完全対応 1Edge 完全対応 12Firefox 完全対応 1.5IE 完全対応 9Opera 完全対応 9.5Safari 完全対応 3WebView Android 完全対応 ≤37Chrome Android 完全対応 18Firefox Android 完全対応 4Opera Android 完全対応 10.1Safari iOS 完全対応 1Samsung Internet Android 完全対応 1.0nodejs 完全対応 0.1.100
lengthChrome 完全対応 1Edge 完全対応 12Firefox 完全対応 1IE 完全対応 4Opera 完全対応 4Safari 完全対応 1WebView Android 完全対応 ≤37Chrome Android 完全対応 18Firefox Android 完全対応 4Opera Android 完全対応 10.1Safari iOS 完全対応 1Samsung Internet Android 完全対応 1.0nodejs 完全対応 0.1.100
mapChrome 完全対応 1Edge 完全対応 12Firefox 完全対応 1.5IE 完全対応 9Opera 完全対応 9.5Safari 完全対応 3WebView Android 完全対応 ≤37Chrome Android 完全対応 18Firefox Android 完全対応 4Opera Android 完全対応 10.1Safari iOS 完全対応 1Samsung Internet Android 完全対応 1.0nodejs 完全対応 0.1.100
ofChrome 完全対応 45Edge 完全対応 12Firefox 完全対応 25IE 未対応 なしOpera 完全対応 26Safari 完全対応 9WebView Android 完全対応 39Chrome Android 完全対応 39Firefox Android 完全対応 25Opera Android 完全対応 26Safari iOS 完全対応 9Samsung Internet Android 完全対応 4.0nodejs 完全対応 4.0.0
popChrome 完全対応 1Edge 完全対応 12Firefox 完全対応 1IE 完全対応 5.5Opera 完全対応 4Safari 完全対応 1WebView Android 完全対応 1Chrome Android 完全対応 18Firefox Android 完全対応 4Opera Android 完全対応 10.1Safari iOS 完全対応 1Samsung Internet Android 完全対応 1.0nodejs 完全対応 0.1.100
pushChrome 完全対応 1Edge 完全対応 12Firefox 完全対応 1IE 完全対応 5.5Opera 完全対応 4Safari 完全対応 1WebView Android 完全対応 1Chrome Android 完全対応 18Firefox Android 完全対応 4Opera Android 完全対応 10.1Safari iOS 完全対応 1Samsung Internet Android 完全対応 1.0nodejs 完全対応 0.1.100
reduceChrome 完全対応 3Edge 完全対応 12Firefox 完全対応 3IE 完全対応 9Opera 完全対応 10.5Safari 完全対応 5WebView Android 完全対応 ≤37Chrome Android 完全対応 18Firefox Android 完全対応 4Opera Android 完全対応 14Safari iOS 完全対応 4Samsung Internet Android 完全対応 1.0nodejs 完全対応 0.1.100
reduceRightChrome 完全対応 3Edge 完全対応 12Firefox 完全対応 3IE 完全対応 9Opera 完全対応 10.5Safari 完全対応 5WebView Android 完全対応 ≤37Chrome Android 完全対応 18Firefox Android 完全対応 4Opera Android 完全対応 14Safari iOS 完全対応 4Samsung Internet Android 完全対応 1.0nodejs 完全対応 0.1.100
reverseChrome 完全対応 1Edge 完全対応 12Firefox 完全対応 1IE 完全対応 5.5Opera 完全対応 4Safari 完全対応 1WebView Android 完全対応 1Chrome Android 完全対応 18Firefox Android 完全対応 4Opera Android 完全対応 10.1Safari iOS 完全対応 1Samsung Internet Android 完全対応 1.0nodejs 完全対応 0.1.100
shiftChrome 完全対応 1Edge 完全対応 12Firefox 完全対応 1IE 完全対応 5.5Opera 完全対応 4Safari 完全対応 1WebView Android 完全対応 1Chrome Android 完全対応 18Firefox Android 完全対応 4Opera Android 完全対応 10.1Safari iOS 完全対応 1Samsung Internet Android 完全対応 1.0nodejs 完全対応 0.1.100
sliceChrome 完全対応 1Edge 完全対応 12Firefox 完全対応 1IE 完全対応 4Opera 完全対応 4Safari 完全対応 1WebView Android 完全対応 1Chrome Android 完全対応 18Firefox Android 完全対応 4Opera Android 完全対応 10.1Safari iOS 完全対応 1Samsung Internet Android 完全対応 1.0nodejs 完全対応 0.1.100
someChrome 完全対応 1Edge 完全対応 12Firefox 完全対応 1.5IE 完全対応 9Opera 完全対応 9.5Safari 完全対応 3WebView Android 完全対応 ≤37Chrome Android 完全対応 18Firefox Android 完全対応 4Opera Android 完全対応 10.1Safari iOS 完全対応 1Samsung Internet Android 完全対応 1.0nodejs 完全対応 0.1.100
sortChrome 完全対応 1Edge 完全対応 12Firefox 完全対応 1IE 完全対応 5.5Opera 完全対応 4Safari 完全対応 1WebView Android 完全対応 1Chrome Android 完全対応 18Firefox Android 完全対応 4Opera Android 完全対応 10.1Safari iOS 完全対応 1Samsung Internet Android 完全対応 1.0nodejs 完全対応 0.1.100
spliceChrome 完全対応 1Edge 完全対応 12Firefox 完全対応 1IE 完全対応 5.5
補足
完全対応 5.5
補足
補足 From Internet Explorer 5.5 through 8, all elements of the array will not be deleted if deleteCount is omitted. This behavior was fixed in Internet Explorer 9.
Opera 完全対応 4Safari 完全対応 1WebView Android 完全対応 1Chrome Android 完全対応 18Firefox Android 完全対応 4Opera Android 完全対応 10.1Safari iOS 完全対応 1Samsung Internet Android 完全対応 1.0nodejs 完全対応 0.1.100
toLocaleStringChrome 完全対応 1Edge 完全対応 12Firefox 完全対応 1IE 完全対応 5.5Opera 完全対応 4Safari 完全対応 1WebView Android 完全対応 ≤37Chrome Android 完全対応 18Firefox Android 完全対応 4Opera Android 完全対応 10.1Safari iOS 完全対応 1Samsung Internet Android 完全対応 1.0nodejs 完全対応 0.1.100
toSource
非標準
Chrome 未対応 なしEdge 未対応 なしFirefox 未対応 1 — 74
補足
未対応 1 — 74
補足
補足 Starting in Firefox 74, toSource() is no longer available for use by web content. It is still allowed for internal and privileged code.
IE 未対応 なしOpera 未対応 なしSafari 未対応 なしWebView Android 未対応 なしChrome Android 未対応 なしFirefox Android 完全対応 4Opera Android 未対応 なしSafari iOS 未対応 なしSamsung Internet Android 未対応 なしnodejs 未対応 なし
toStringChrome 完全対応 1Edge 完全対応 12Firefox 完全対応 1IE 完全対応 4Opera 完全対応 4Safari 完全対応 1WebView Android 完全対応 ≤37Chrome Android 完全対応 18Firefox Android 完全対応 4Opera Android 完全対応 10.1Safari iOS 完全対応 1Samsung Internet Android 完全対応 1.0nodejs 完全対応 0.1.100
unshiftChrome 完全対応 1Edge 完全対応 12Firefox 完全対応 1IE 完全対応 5.5Opera 完全対応 4Safari 完全対応 1WebView Android 完全対応 1Chrome Android 完全対応 18Firefox Android 完全対応 4Opera Android 完全対応 10.1Safari iOS 完全対応 1Samsung Internet Android 完全対応 1.0nodejs 完全対応 0.1.100
valuesChrome 完全対応 66Edge 完全対応 12Firefox 完全対応 60IE 未対応 なしOpera 完全対応 53Safari 完全対応 9WebView Android 完全対応 66Chrome Android 完全対応 66Firefox Android 完全対応 60Opera Android 完全対応 47Safari iOS 完全対応 9Samsung Internet Android 完全対応 9.0nodejs 完全対応 10.9.0
完全対応 10.9.0
完全対応 6.5.0
補足 無効
補足 The --harmony-array-prototype-values flag is required; the --harmony flag is not sufficient in this case.
無効 From version 6.5.0: this feature is behind the --harmony-array-prototype-values runtime flag.
未対応 0.12 — 4.0.0
@@iteratorChrome 完全対応 38Edge 完全対応 12Firefox 完全対応 36
完全対応 36
未対応 27 — 36
補足 代替名
補足 A placeholder property named @@iterator is used.
代替名 非標準の名前 @@iterator を使用しています。
未対応 17 — 27
補足 代替名
補足 A placeholder property named iterator is used.
代替名 非標準の名前 iterator を使用しています。
IE 未対応 なしOpera 完全対応 25Safari 完全対応 10WebView Android 完全対応 38Chrome Android 完全対応 38Firefox Android 完全対応 36
完全対応 36
未対応 27 — 36
補足 代替名
補足 A placeholder property named @@iterator is used.
代替名 非標準の名前 @@iterator を使用しています。
未対応 17 — 27
補足 代替名
補足 A placeholder property named iterator is used.
代替名 非標準の名前 iterator を使用しています。
Opera Android 完全対応 25Safari iOS 完全対応 10Samsung Internet Android 完全対応 3.0nodejs 完全対応 0.12
@@speciesChrome 完全対応 51Edge 完全対応 79Firefox 完全対応 48IE 未対応 なしOpera 完全対応 38Safari 完全対応 10WebView Android 完全対応 51Chrome Android 完全対応 51Firefox Android 完全対応 48Opera Android 完全対応 41Safari iOS 完全対応 10Samsung Internet Android 完全対応 5.0nodejs 完全対応 6.5.0
完全対応 6.5.0
完全対応 6.0.0
無効
無効 From version 6.0.0: this feature is behind the --harmony runtime flag.
@@unscopablesChrome 完全対応 38Edge 完全対応 12Firefox 完全対応 48IE 未対応 なしOpera 完全対応 25Safari 完全対応 10WebView Android 完全対応 38Chrome Android 完全対応 38Firefox Android 完全対応 48Opera Android 完全対応 25Safari iOS 完全対応 10Samsung Internet Android 完全対応 3.0nodejs 完全対応 0.12

凡例

完全対応  
完全対応
未対応  
未対応
非標準。ブラウザー間の互換性が低い可能性があります。
非標準。ブラウザー間の互換性が低い可能性があります。
実装ノートを参照してください。
実装ノートを参照してください。
ユーザーが明示的にこの機能を有効にしなければなりません。
ユーザーが明示的にこの機能を有効にしなければなりません。
非標準の名前を使用しています。
非標準の名前を使用しています。

関連情報