javascript エラー「Uncaught RangeError: Invalid array length」の解決方法

javascript エラー「Uncaught RangeError: Invalid array length」の解決方法

javascriptで、エラー「Uncaught RangeError: Invalid array length」が発生した場合の原因と解決方法を記述してます。配列の「length」にマイナスや小数などの値を指定した際に発生します。

環境

  • OS windows11 pro 64bit
  • Apache 2.4.43
  • ブラウザ chrome 108.0.5359.125

エラー内容

以下の「length」の値を「-1」に設定したコードで発生。

let arr = [1,2,3];
arr.length = -1;

エラーメッセージ

Uncaught RangeError: Invalid array length

画像

firefox(バージョン107)でも、同様のエラーとなります。

Uncaught RangeError: invalid array length

画像

safari(15.5)でも、同様のエラーとなります。

RangeError: invalid array length

画像

原因

length プロパティに代入できる値は、整数値しか取れないため、マイナスを指定するとエラーになります。

解決方法

整数値を指定するか、

let arr = [1,2,3];
arr.length = 1; 

もしくは絶対値を使用します。

let arr = [1,2,3];

arr.length = Math.abs(-1); 

console.log(arr); // [1]

ちなみに、文字列の数値を使用してもエラーにはなりません。

let arr = [1,2,3];

arr.length = '2'; 

console.log(arr); // [1, 2]

ただし、小数を指定すると同じエラーが発生します。

let arr = [1,2,3];

arr.length = 2.2; // Uncaught RangeError: Invalid array length