体験を伝える―『ガジェット通信』の考え方

面白いものを探しにいこう 本物を体験し体感しよう 会いたい人に会いに行こう 見たことのないものを見に行こう そしてそれをやわらかくみんなに伝えよう [→ガジェ通についてもっと詳しく] [→ガジェット通信フロアについて]

【選択式問題】JavaScript検定RPG Array編 問題解説 #javascript

今回の問題

今回の『JavaScript検定RPG』は『Array編』ということで、JavaScript のArrayについての問題が出題されました。

それでは以下、各問題とその解答を見ていきましょう。

問題1

配列を作る方法として適切でないのはどれ?

new Array(0, 1, 2)
[3, 4, 5]
Array{6, 7, 8}

JavaScriptでは、「new Array(要素, 要素, …)」あるいは「[要素, 要素, …]」といった方法で、配列を作ることができます。しかし、「Array{要素, 要素, …}」といった方法では、配列を作ることができません。

Array を new 演算子で初期化する際は、その引数が1つかつ0以上の整数値の場合は、引数は要素数になります。それ以外の場合は、配列の各要素になります。

そのため答えは、3番目の「Array{6, 7, 8}」になります。

// 参考コードと出力結果
console.log(“[” + new Array(0, 1, 2) + “]”); // [0,1,2]
console.log(“[” + new Array(“9”) + “]”); // [9]
console.log(“[” + new Array() + “]”); // []
console.log(“[” + new Array(4) + “]”); // [,,,]

console.log(“[” + [3, 4, 5] + “]”); // [3,4,5]

参考1:Array – JavaScript | MDN

問題2

配列の長さを得る方法はどれ?

[0, 1, 2].length
[3, 4, 5].length()
length([6, 7, 8])
Array.length([9, 0, 1])

JavaScriptでは、「配列.length」で配列の長さを得られます。

そのため答えは、1番目の「[0, 1, 2].length」になります。

// 参考コードと出力結果
console.log([0, 1, 2].length); // 3

参考1:Array – JavaScript | MDN

問題3

var a = [0, 1]; の時、a[2] の値は?

0
1
-1
undefined

JavaScriptでは、配列の要素の範囲外を参照しようとした際は「undefined」が戻ります。JavaScriptは、配列の要素の添え字を0から数えます。そのため、「a[2]」は要素の範囲外となります。

そのため答えは、4番目の「undefined」になります。

// 参考コードと出力結果
var a = [0, 1];
console.log(a[2]); // undefined

参考:Array – JavaScript | MDN

問題4

以下の式でエラーが出ないのはどれ?

new Array(-1)
new Array(Math.pow(2,-1))
new Array(2<<32)
new Array(Math.pow(2,32))

Array を new 演算子で初期化する際、引数が1つだけで、数値が設定された際は、その引数は要素数と見なされます。

その際、0 から 232-1 までの整数値の場合は、正しく配列が作られて、それ以外の数値の場合はエラーが起きます。

問題の引数のうち、上記の条件を満たすものは「2<<32」のみです。「2<<32」は 2 となり、条件に合致します。

(※「2<<29」は 1073741824、「2<<30」は -2147483648、「2<<31」は 0、「2<<32」は 2となります。詳しくは「参考コードと出力結果2」を参照)

1 2次のページ
CodeIQ MAGAZINEの記事一覧をみる
  • 誤字を発見した方はこちらからご連絡ください。
  • ガジェット通信編集部への情報提供はこちらから
  • 記事内の筆者見解は明示のない限りガジェット通信を代表するものではありません。