js (json) でオブジェクトまたは配列リテラルを定義するときに各ブラウザが余分なカンマを処理する方法_javascript スキル
1. js エンジンはコードの読み込み時に構文解析を実行します。記述された js が標準化されていない場合、構文解析は失敗します。このときのエラーを構文エラーといいます
2. 構文解析に合格し、js エンジンがコードを実行します。実行中に発生するエラーはランタイム エラーと呼ばれます
エンジンが異なれば、これら 2 つのエラーの処理方法も異なります。次のように:
var p = {name: "Jack", age:33,};//33 の後にカンマがあることに注意してください
p.toString = function() {return "Name: " this.name ", Age: " this.age}; 🎜>console.log( p);
alert(p);//名前: Jack、33 歳
IE6/7でテストした場合、構文解析期間中にエラーが報告され、当然実行期間には入りません。
ただし、この問題は IE8 では修正されており、エラーは報告されません。他のブラウザではエラーは報告されません。
要約すると、このエラーは見つけるのが困難です。多くの場合、誤ってカンマを追加したり、多くの属性を含むオブジェクトまたは配列を定義し、それらの一部を削除して余分なカンマを残したりすることが原因で発生します。
var p = {name:"Jack",age:33,};
var ary = ["one","two","three",];
//標準的な書き方
var p = {name :"Jack",age:33};
var ary = ["one","two","three"];
console.log(ary.length);
ECMAScript 5 11.1.4 は次のように記述しました:
要素リスト内のコンマの前に AssignmentExpression (つまり、先頭にカンマがあるか、別のカンマの後にある場合、配列の末尾で要素が省略されている場合、配列要素の欠落は配列の長さに影響し、後続の要素のインデックスが増加します。
かつて誰かが配列のこの機能を利用して、いわゆる「世界一短い IE 判定」
alert(ie);
JSON
var json = { id: 1, name: 'heero' };
最後のキーと値のペア の後にもカンマが追加されます。
var json = { id: 1, name: 'heero', };
配列
var arr = [1, 2, 3];
最後の要素 の後にコンマを誤って追加する可能性があります:
var arr = [1, 2, 3,];
var arr = [1, 2, 3,];<p>for (var i = 0; i <arr.length i><code>var arr = [1, 2, 3,];<br>for (var i = 0; i < arr.length; i ) { alert(arr[i]); }
IE以外のブラウザでは、1、2、3が順に出力されますが、IEブラウザでは、1、2、3、未定義が順に出力されます。明らかに、IE は余分なカンマの後に未定義要素 を追加します。
余分なコンマが最後ではなく途中にある別のケースを考えてみましょう:
var arr = [1, 2,, 3,];<p>for (var i = 0; i <arr.length i><code>var arr = [1, 2,, 3,];<br>for (var i = 0; i < arr.length; i ) { alert(arr[i]); }
すべてのブラウザは、1、2、未定義、3 を出力します。処理方法は同じであることがわかります。つまり、は余分なカンマの前に未定義の要素 を挿入します。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









foreach ループを使用して PHP 配列から重複要素を削除する方法は次のとおりです。配列を走査し、要素がすでに存在し、現在の位置が最初に出現しない場合は、要素を削除します。たとえば、データベース クエリの結果に重複レコードがある場合、このメソッドを使用してそれらを削除し、重複レコードのない結果を取得できます。

PHP で配列をディープ コピーする方法には、json_decode と json_encode を使用した JSON エンコードとデコードが含まれます。 array_map と clone を使用して、キーと値のディープ コピーを作成します。シリアル化と逆シリアル化には、serialize と unserialize を使用します。

PHP の配列キー値の反転メソッドのパフォーマンスを比較すると、array_flip() 関数は、大規模な配列 (100 万要素以上) では for ループよりもパフォーマンスが良く、所要時間が短いことがわかります。キー値を手動で反転する for ループ方式は、比較的長い時間がかかります。

MySQL クエリ結果の配列をオブジェクトに変換する方法は次のとおりです。 空のオブジェクト配列を作成します。結果の配列をループし、行ごとに新しいオブジェクトを作成します。 foreach ループを使用して、各行のキーと値のペアを新しいオブジェクトの対応するプロパティに割り当てます。新しいオブジェクトをオブジェクト配列に追加します。データベース接続を閉じます。

PHP の array_group_by 関数は、キーまたはクロージャ関数に基づいて配列内の要素をグループ化し、キーがグループ名、値がグループに属する要素の配列である連想配列を返すことができます。

PHP で配列のディープ コピーを実行するためのベスト プラクティスは、 json_decode(json_encode($arr)) を使用して配列を JSON 文字列に変換し、それから配列に戻すことです。 unserialize(serialize($arr)) を使用して配列を文字列にシリアル化し、それを新しい配列に逆シリアル化します。 RecursiveIteratorIterator を使用して、多次元配列を再帰的に走査します。

PHP では、配列は順序付けられたシーケンスであり、要素はインデックスによってアクセスされます。オブジェクトは、new キーワードによって作成されたプロパティとメソッドを持つエンティティです。配列へのアクセスはインデックス経由で、オブジェクトへのアクセスはプロパティ/メソッド経由で行われます。配列値が渡され、オブジェクト参照が渡されます。

多次元配列のソートは、単一列のソートとネストされたソートに分類できます。単一列のソートでは、array_multisort() 関数を使用して列ごとにソートできますが、ネストされたソートでは、配列を走査してソートするための再帰関数が必要です。具体的な例としては、製品名による並べ替えや、売上数量や価格による化合物の並べ替えなどがあります。
