1. ホーム
  2. javascript

[解決済み] JavaScriptで配列の先頭に新しい配列要素を追加するにはどうすればよいですか?

2022-03-16 17:56:44

質問

配列の先頭に要素を追加または前置する必要があります。

例えば、以下のような配列の場合。

[23, 45, 12, 67]

そして、私のAJAXコールからの応答は、次のとおりです。 34 で、更新された配列は以下のようにしたい。

[34, 23, 45, 12, 67]

現状ではこのようにしようと思っています。

var newArray = [];
newArray.push(response);

for (var i = 0; i < theArray.length; i++) {
    newArray.push(theArray[i]);
}

theArray = newArray;
delete newArray;

もっと良い方法はないでしょうか?JavaScriptにはこのような機能が組み込まれているのでしょうか?

私のメソッドの複雑さは O(n) より良い実装を見るのは本当に興味深いことです。

どのように解決するのか?

使用方法 unshift . それは、次のようなものです。 push ただし、配列の末尾ではなく先頭に要素を追加します。

  • unshift / push - 配列の先頭/末尾に要素を追加する。
  • shift / pop - 配列の先頭/末尾の要素を削除して返します。

簡単な図...

   unshift -> array <- push
   shift   <- array -> pop
 

とチャートを表示します。

          add  remove  start  end
   push    X                   X
    pop           X            X
unshift    X             X
  shift           X      X

をチェックしてください。 MDN Array ドキュメント . 配列の要素をプッシュ/ポップする機能を持つほぼすべての言語には、アンシフト/シフトする機能もあります。 push_front / pop_front ) 要素の実装を自分で行う必要はないはずです。


コメントで指摘されているように、元の配列の変異を避けたいのであれば concat これは、2つ以上の配列を連結するものです。これを使用すると、1 つの要素を既存の配列の前面または背面に押し出すことができます。そのためには、新しい要素を単一要素の配列に変換する必要があります。

const array = [3, 2, 1]

const newFirstElement = 4

const newArray = [newFirstElement].concat(array) // [ 4, 3, 2, 1 ]

console.log(newArray);

concat は、項目を追加することもできます。の引数は concat は任意の型が可能です。配列でない場合は、暗黙のうちに単一要素の配列にラップされます。

const array = [3, 2, 1]

const newLastElement = 0

// Both of these lines are equivalent:
const newArray1 = array.concat(newLastElement) // [ 3, 2, 1, 0 ]
const newArray2 = array.concat([newLastElement]) // [ 3, 2, 1, 0 ]

console.log(newArray1);
console.log(newArray2);