配列の先頭に要素を追加または付加する必要があります。
たとえば、配列が以下のようになっている場合:
[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)
、より優れた実装を見るのは非常に興味深いでしょう。
ベストアンサー1
使用unshift
それはまるでpush
ただし、要素は配列の末尾ではなく先頭に追加されます。
unshift
/push
- 配列の先頭/末尾に要素を追加しますshift
/pop
- 配列の最初/最後の要素を削除して返します
簡単な図…
unshift -> [array] <- push
shift <- [array] -> pop
チャート:
追加 | 取り除く | 始める | 終わり | |
---|---|---|---|---|
push |
バツ | バツ | ||
pop |
バツ | バツ | ||
unshift |
バツ | バツ | ||
shift |
バツ | バツ |
チェックしてくださいMDN 配列ドキュメント配列から要素をプッシュ/ポップする機能を持つほぼすべての言語には、要素をアンシフト/シフト ( 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);