[解決済み】配列に値を前置する最も効率的な方法
2022-03-28 02:19:54
質問
のサイズを持つ配列があるとします。
N
(ここで
N > 0
を使用する場合、O(N + 1)ステップを必要としない、より効率的な前置詞の方法はありますか?
コードでは、本質的に、私が現在行っていることは、次のとおりです。
function prependArray(value, oldArray) {
var newArray = new Array(value);
for(var i = 0; i < oldArray.length; ++i) {
newArray.push(oldArray[i]);
}
return newArray;
}
解決方法は?
Big-Oの観点でより効率的かどうかは分かりませんが、確実に
unshift
メソッドはより簡潔です。
var a = [1, 2, 3, 4];
a.unshift(0);
// => [0, 1, 2, 3, 4]
console.log({a});
[編集]をクリックします。
この
jsPerfベンチマーク
が示すように
unshift
は、少なくともいくつかのブラウザで、big-O の性能の違いに関係なく、きちんと高速化されています。
もし
の場合、配列をインプレースで変更しても問題ありません。 もし本当に元の配列を変更できないのであれば、以下のスニペットのようなことをすることになるでしょう。
a.slice().unshift(0); // Use "slice" to avoid mutating "a".
[編集2]
完全を期すために、OPの例の代わりに次の関数を使用することができます。
prependArray(...)
を活用するために、Array
unshift(...)
メソッドを使用します。
function prepend(value, array) {
var newArray = array.slice();
newArray.unshift(value);
return newArray;
}
var x = [1, 2, 3];
var y = prepend(0, x);
// x => [1, 2, 3];
// y => [0, 1, 2, 3];
console.log({ x, y });
関連
-
[解決済み】Uncaught ReferenceError。Reactが定義されていない
-
[解決済み】'useState' が定義されていない no-undef React
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] JavaScriptでオブジェクトをディープクローンする最も効率的な方法は何ですか?
-
[解決済み] JavaScript で配列に値が含まれているかどうかを確認するにはどうすればよいですか?
-
[解決済み] なぜGoogleはJSONレスポンスにwhile(1);を前置するのでしょうか?
-
[解決済み] 配列からArrayListを作成する
-
[解決済み] 配列に特定のインデックスで項目を挿入する方法 (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:getElementById対getElementsById(両方が別のページで動作する)。
-
[解決済み】webpack: モジュールが見つかりません。Error: 解決できない(相対パスで)
-
[解決済み】ある要素が可視DOMに存在するかどうかを確認するにはどうすればいいですか?
-
[解決済み】未定義のプロパティ 'bind' を読み込めない。React.js【重複あり
-
[解決済み】 Uncaught Error: Invariant Violation: 解決済み】 Uncaught Error: Invariant Violation: Element type is invalid: expected a string (for built-in components) or a class/function but got: object.
-
[解決済み】このオブジェクトの "forEach "はなぜ関数でないのですか?
-
[解決済み】Uncaught ReferenceError。Firebase は定義されていません。
-
[解決済み】Babel NodeJS ES6: SyntaxError: 予期しないトークンのエクスポート
-
[解決済み】HTMLの最初の行に予期しないトークン<がある。
-
[解決済み】Vueが定義されていない