[解決済み] あるオブジェクトのキーをすべて小文字にする最も良い方法(最も効率的な方法)は何ですか?
2023-06-17 11:45:56
質問
私は
function keysToLowerCase (obj) {
var keys = Object.keys(obj);
var n = keys.length;
while (n--) {
var key = keys[n]; // "cache" it, for less lookups to the array
if (key !== key.toLowerCase()) { // might already be in its lower case version
obj[key.toLowerCase()] = obj[key] // swap the value to a new lower case key
delete obj[key] // delete the old key
}
}
return (obj);
}
例えば、他のキーは本当に削除されるのか、それとも参照だけが削除され、ガベージコレクタに後で噛まれるのか?
また、私は これらのテスト を作成しましたので、そこにあなたの回答を追加して、どのように一致するかを確認できればと思います。
EDIT 1: どうやら、テストによると、キーがすでに小文字かどうかをチェックしない方が速いようですが、速くなったからといって、これを無視して新しい小文字のキーを作るだけで、もっと混乱が生じるのでしょうか?ガベージコレクタはこれに満足するでしょうか?
どのように解決するのですか?
この 最速 思いつくのは、新しいオブジェクトを作成した場合です。
var key, keys = Object.keys(obj);
var n = keys.length;
var newobj={}
while (n--) {
key = keys[n];
newobj[key.toLowerCase()] = obj[key];
}
私はv8の現在の内部動作に十分精通していないので、明確な答えは出せません。数年前、開発者がオブジェクトについて話しているビデオを見たことがあります。 参照だけを削除して、ガベージコレクタに処理を任せるというものでした。しかし、それは何年も前のことなので、当時はそうであっても、今はそうである必要はありません。
後で噛みつかれるのでしょうか?それはあなたがやっていることによりますが、おそらくないでしょう。短命のオブジェクトを作成することは非常に一般的なので、コードはそれを処理するように最適化されています。しかし、すべての環境には制限があり、もしかしたら噛み付くかもしれません。実際のデータでテストする必要があります。
関連
-
[解決済み] HTMLCollectionをArrayに変換する最も効率的な方法
-
[解決済み] JavaScriptでオブジェクトをディープクローンする最も効率的な方法は何ですか?
-
[解決済み] モバイル端末の検出にはどのような方法がありますか?
-
[解決済み] JavaScriptでオブジェクトのキー/プロパティの数を効率的にカウントする方法
-
[解決済み] jQueryでJavaScriptオブジェクトから選択する際に、オプションを追加する最も良い方法は何ですか?
-
[解決済み] JavaScript の文字列をすべて小文字に変換する
-
[解決済み] nullはなぜオブジェクトなのか、nullとundefinedの違いは何ですか?
-
[解決済み] JavaScriptで数値を文字列に変換するのに最適な方法は何ですか?
-
[解決済み] Intel CPU の _mm_popcnt_u64 で、32 ビットのループカウンターを 64 ビットに置き換えると、パフォーマンスが著しく低下します。
-
[解決済み] V8 Javascript エンジンのスタンドアロン実行
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] ジェスト あるクラスの特定のメソッドをモックする方法
-
[解決済み] javascriptで2つの数値を連結する方法は?
-
[解決済み] 文字列のn番目の出現箇所を取得するには?
-
[解決済み] bootstrap のポップオーバーがすべての要素の上に表示されない
-
[解決済み] javascript の関数から `undefined` と `null` のどちらを返すのが良いのでしょうか?
-
[解決済み] React js 親コンポーネントから子コンポーネントの状態を変更する
-
[解決済み] JavaScriptでjson-objectのキーを取得する [重複].
-
[解決済み] querySelectorAllがない場合、ライブラリを使用せずに属性で要素を取得する?
-
[解決済み] V8 Javascript エンジンのスタンドアロン実行
-
[解決済み] リダイレクトされずにHTMLフォームを送信する方法