ホームページ ウェブフロントエンド jsチュートリアル JavaScript の奇妙な動作 配列_JavaScript のヒント

JavaScript の奇妙な動作 配列_JavaScript のヒント

May 16, 2016 pm 03:18 PM
js配列

プログラミング言語における配列の重要性は自明のことですが、JavaScript の配列は最も一般的に使用されるオブジェクトの 1 つであり、弱い型であるため、非常に柔軟で強力です。同じ型またはそのサブタイプの要素のみを格納できる Java などの厳密に型指定された高級言語の配列とは異なり、JavaScript は複数の型の要素を同じ配列に格納でき、長さを動的に調整することもできます。データが増加するにつれて、または配列の長さの自動変更を減らします。

今日は JavaScript の配列を確認し、彼の奇妙な動作をいくつかまとめました。間違いがある場合は、ご指摘ください。

奇妙な 1: Array() コンストラクター関数は、新しいキーワードを使用せずに呼び出すことができます:

Array() コンストラクターは、配列の要素として渡されたパラメーターを使用して配列を作成します。通常、次のように呼び出します。

var a = new Array(1, 2, "bom!");
a.length; //3
console.log(a); //[1, 2, "bom!"] 
ログイン後にコピー
ただし、次のように new を省略することもできます:


var a = Array(1, 2, "bom!");
a.length; //3
console.log(a); //[1, 2, "bom!"] 
ログイン後にコピー
内部実装の仕組みは分かりませんが、コンストラクタ関数は以下のように定義されているのではないかと思います。


function Array(args) {
//如果,this不是Array的实例的话,
//说明不是通过new调用的,则在这里再重新调用
if( !this instanceof Array) {
return new Array(args);
}//后面是正常调用时的实现代码<br />//...<br />} 
ログイン後にコピー

奇妙な 2: コンストラクターにパラメーターが 1 つだけ渡された場合、動作は予測できません

パラメータが 1 つだけ渡され、このパラメータが整数の場合、配列が取得され、長さはこのパラメータと同じになります


var a = new Array(12);
console.log(a.length); //12
console.log(a); //[] 
ログイン後にコピー
浮動小数点数のみを渡すと、エラーが報告されます:


var a = new Array(1.1); //Uncaught RangeError: Invalid array length(…) 
ログイン後にコピー
文字列を配列の最初の要素として渡すことは、正常に機能します。


var a = new Array("1.1");
console.log(a.length); //
console.log(a); //["1.1"] 
ログイン後にコピー
しかし、曖昧さを避けるために、配列をリテラルの形式で直接作成することが最善であることをお勧めします。


var a = []; //空数组
var a = [1, 1, "bom"]; //三个元素
var a = [12]; //一个元素,并且元素是12 
ログイン後にコピー

奇妙な 3: 配列の長さ属性は変更可能 (書き込み可能)

以下のように長さを2から100に直接変更して修正成功しました! ! !


var a = [1, 2, 3, 4];
console.log(a.length); //4
a.length = 100; 
console.log(a.length); //100 
ログイン後にコピー
長さは 100 ですが、要素 a[4] ~ a[99] は存在せず、たとえば、0 から a.length までのループでそれらの値を要求すると、未定義になります。 。


次を見る:


var a = [1, 2, 3, 4];
a.length = 100;
console.log(a[10]); //undefined
console.log(99 in a); //false 
ログイン後にコピー
以下の例と似ています:


var a = [1, 2, 3, 4];
a[99] = undefined;
console.log(a.length); //100 
ログイン後にコピー
違いは、ここで a[99] が存在するのは、未定義の値があるにもかかわらず、作成したためです。しかし、次のように、a[4] から a[98] までのすべての要素は存在しません:


var a = [1, 2, 3, 4];
a[99] = undefined;
console.log(99 in a); //true;
console.log(98 in a); //false
console.log(a.length); //100 
ログイン後にコピー
上記では、JavaScript 配列の奇妙な動作について説明しました。記事がうまく書かれていない場合はご容赦ください。ありがとうございます。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

es6配列から要素を削除する方法 es6配列から要素を削除する方法 Jan 11, 2023 pm 03:51 PM

方法: 1. 最初の要素を削除するには、shift() を使用します。構文は「array.shift()」です; 2. 最後の要素を削除するには、pop() を使用します。構文は「array.pop()」です; 3. splice() を使用して任意の位置の要素を削除します。構文は「array.splice(位置, 数値)」です。 4. length を使用して最後の N 要素を削除します。構文は「array.length=元の配列の長さ-N」です。 ; 5. 空の配列「[ ]」を直接代入して要素をクリアします; 6. delete を使用して、指定した添え字の要素を削除します。

JavaScriptで文字列を配列に変換する方法 JavaScriptで文字列を配列に変換する方法 Nov 23, 2022 pm 07:28 PM

3 つの変換方法: 1. 指定された文字列を文字列配列に分割するには、split() を使用します。構文は「str.split (区切り文字、配列の最大長)」です; 2. 拡張演算子「...」を使用します (反復可能)文字列オブジェクトの場合、文字配列に変換します (構文 "[...str]"; 3. Array.from() を使用して文字列を配列に変換します (構文 "Array.from(str) "。

js配列をphp配列に変換できますか? js配列をphp配列に変換できますか? Jun 02, 2023 am 10:06 AM

js配列をphp配列に変換することができます 操作方法は、 1.phpサンプルファイルを作成する; 2.「JSON.stringify()」という構文を使用して、js配列をJSON形式の文字列に変換する; 3.構文「json_decode()」を使用します。「JSON 形式の文字列を PHP 配列に変換します。パラメータ true がここに追加されます。これは、JSON 形式の文字列が PHP 連想配列に変換されることを意味します。

jsで配列の長さを取得する方法 jsで配列の長さを取得する方法 Jun 20, 2023 pm 05:33 PM

JS で配列の長さを取得するのは非常に簡単です。各配列には length プロパティがあり、配列の最大長、つまり、その値は添字の最大値に 1 を加えたものを返します。数値の添え字は 2^32-1 未満である必要があるため、長さ属性の最大値は 2^32-1 に等しくなります。次のコードでは、空の配列を定義し、インデックスが 100 である要素に値を割り当てます。その後、length プロパティは 101 を返します。したがって、長さ属性は実際の配列要素の数を反映できません。

js配列から要素を削除するにはいくつかの方法があります js配列から要素を削除するにはいくつかの方法があります Aug 02, 2023 am 10:09 AM

js 配列から要素を削除するには 4 つの方法があります: 1. splice を使用する; 2. filter を使用する; 3. pop メソッドとシフトを使用する; 4. delete キーワードを使用する。

JS 配列のソート:sort() メソッドの使用方法 JS 配列のソート:sort() メソッドの使用方法 Dec 27, 2023 pm 03:40 PM

JavaScript の Array.prototype.sort() メソッドは、配列の要素をソートするために使用されます。このメソッドはその場でソートします。つまり、ソートされた新しい配列を返すのではなく、元の配列を変更します。デフォルトでは、sort() メソッドは Unicode コード ポイント値に従って文字列を並べ替えます。これは、オブジェクトやその他の複雑なデータ型の並べ替えではなく、主に文字列と数値の並べ替えに使用されることを意味します。

js配列から重複を削除する方法は何ですか? js配列から重複を削除する方法は何ですか? Aug 09, 2023 pm 04:47 PM

js 配列の重複を排除する方法には、Set の使用、indexOf の使用、includes の使用、filter の使用、reduce の使用などがあります。 1. セット内の要素が繰り返されないという特徴を持つ Set を使用します; 2. 配列内の指定された要素の最初のインデックス位置を返すには、indexOf を使用します; 3. 要素がすでに存在するかどうかを判断するには、includes を使用します4. filter を使用して要素をフィルタリングする; 5. reduce を使用して配列内の要素を圧縮するなど。

JavaScript で配列の要素の長さと合計を見つける方法 JavaScript で配列の要素の長さと合計を見つける方法 Sep 20, 2022 pm 02:11 PM

JavaScript では、 length 属性を使用して配列の長さを取得できます。構文は「array object.length」です。また、reduce() 関数または ReduceRight() 関数を使用して要素の合計を求めることができます。構文は「」です。 arr.reduce(function f(pre,curr){return pre+cur})」または「arr.reduceRight(function f(pre,curr){return pre+cur})」。

See all articles