オブジェクトのすべてのキーを小文字に変換する最も効率的な方法は何ですか?
P粉066224086
P粉066224086 2023-08-22 12:42:40
0
2
555
<p>私は次の解決策を思いつきました</p> <pre class="brush:php;toolbar:false;">function keyToLowerCase (obj) { var キー = Object.keys(obj); var n = キーの長さ; 一方 (n--) { var key = key[n]; // 配列への検索を少なくするために「キャッシュ」します if (key !== key.toLowerCase()) { // すでに小文字になっている可能性があります obj[key.toLowerCase()] = obj[key] // 値を新しい小文字キーに置き換えます delete obj[key] // 古いキーを削除します } } 戻り値 (obj); }</pre> <p>しかし、v8 がそれをどのように処理するかはわかりません。たとえば、実際に他のキーを削除するのでしょうか、それとも参照を削除するだけで、その後ガベージ コレクターが私を攻撃するのでしょうか? </p> <p>また、これらのテストを作成しました。テストがどのように一致するかを確認できるよう、回答をそこに追加していただければ幸いです。 </p>

これによりさらに混乱が生じますか?ゴミ収集業者はこれで満足するでしょうか? </p>

P粉066224086
P粉066224086

全員に返信(2)
P粉792026467
いいねを押す +0
P粉258788831

私が考える最も早い方法は、新しいオブジェクトを作成することです:

リーリー

私は、v8 の現在の内部動作について明確な答えを出せるほど詳しくはありません。数年前、開発者がオブジェクトについて説明しているビデオを見ましたが、私の記憶が正しければ、参照を削除してガベージ コレクターに処理させるだけでした。しかし、それは数年前のことなので、当時は真実だったとしても、今は必ずしも真実であるとは限りません。

後で迷惑がかかりませんか?それはあなたが何をしているかにもよりますが、おそらくそうではありません。一時的なオブジェクトの作成は非常に一般的であるため、コードはそれを処理できるように最適化されています。しかし、どの環境にも制限があり、問題が発生する可能性があります。実際のデータを使用してテストする必要があります。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート