JavaScript で配列要素を交換する

Anika Tabassum Era 2024年2月15日
  1. JavaScript で一時変数を使用して配列要素を交換する
  2. JavaScript で ES6 デストラクタ代入を使用して配列要素を交換する
  3. JavaScript でビット単位の XOR と配列反復を使用して配列要素を交換する
JavaScript で配列要素を交換する

2つの要素を交換する従来の方法は、temp 変数を使用することです。 JavaScript の場合、配列オブジェクトを変数セットにデフォルトで配列オブジェクトとして簡単に再割り当てし、スワップのために 2つの配列の要素を転送するプロセスをさらに進めることができます。

繰り返しになりますが、ES6 規則により、通常の変数とオブジェクトのより効率的なスワッピングが実現しました。 別の方法は、配列要素をループして交換し、インデックスを読み取るという別の従来の方法を使用することです。

この方法は時間がかかりすぎて、追加のコード行を考慮する必要があります。

ここでは、スワップ タスクをより柔軟にするすべての好ましい例を示します。 コードベースに飛び込みましょう!

JavaScript で一時変数を使用して配列要素を交換する

次の例では、対応する要素を持つ 2つの配列を使用します。 ここでの目標は、新しい変数を割り当て、そこに配列の 1つを転送することです。

次に、その内容を変数にシフトしたばかりの配列に、他の配列を再割り当てします。 最後に、変数の内容を最後に選択した配列にシフトします。

これが配列要素の一時変数切り替えの基本操作です。

コードスニペット:

var x = [1, 2, 3];
var y = [4, 5, 6];
var a;
a = x;
x = y
y = a;
console.log(x)
console.log(y)

出力:

一時変数を使用して配列要素をスワップ

ご覧のとおり、x[1,2,3] を保持し、y[4,5,6] を保持しています。 スワッピングが開始されると、変数 ax の要素を受け取り、xy の要素を受け取ります。

最後のステップでは、ya の内容を追加します。 結果は、スワップされた結果を推測します。

JavaScript で ES6 デストラクタ代入を使用して配列要素を交換する

ES6 デストラクタの割り当ては、2つの配列を簡単に交換し、必要なコードは 1 行だけです。 配列を角括弧で割り当て、右辺を逆の形式で設定するだけです。

デストラクタの割り当てを設定するパターンは、よく見ると簡単です。

コードスニペット:

var x = [1, 3, 5];
var y = [2, 4, 6];
[x, y] = [y, x]
console.log(x)
console.log(y)

出力:

ES6 デストラクタ割り当てを使用して配列要素をスワップする

JavaScript でビット単位の XOR と配列反復を使用して配列要素を交換する

上記の 2つの規則以外にも、配列要素を交換する方法は複数あります。 減算法、ビットごとの XOR 操作、または配列の反復を適用することによる一時変数ルールを使用してスワップできます。

ここでは、2つの配列の要素を交換する XOR 操作を数えました。

コードスニペット:

var x = [7, 42, 7];
var y = [4, 5, 6];
if (x.length == y.length) {
  for (var i = 0; i < x.length; i++) {
    x[i] = x[i] ^ y[i]
    y[i] = x[i] ^ y[i]
    x[i] = x[i] ^ y[i]
  }
}
console.log(x)
console.log(y)

出力:

ビット単位の XOR と配列反復を使用して配列要素を交換する

x[0] = 7y[0] = 4 の例を考えてみましょう。 7^4 を実行すると、7 に対応するビット パターンは 111 で、4100 です。

最初の XOR の後、011 を取得し、x[0] として保存します。 次の XOR には x[0] = 3 (011)y[0] = 100 があるため、この場合、y[0] に格納される結果は 111 = 7

そして、x[0] では、111^011 = 100 (4) が得られます。 したがって、x および y 配列の最初の要素が交換され、インデックス付き要素ごとにこの反復を繰り返すことができます。

Anika Tabassum Era avatar Anika Tabassum Era avatar

Era is an observer who loves cracking the ambiguos barriers. An AI enthusiast to help others with the drive and develop a stronger community.

LinkedIn Facebook

関連記事 - JavaScript Array