JavaScript で配列要素を交換する
- JavaScript で一時変数を使用して配列要素を交換する
- JavaScript で ES6 デストラクタ代入を使用して配列要素を交換する
- JavaScript でビット単位の XOR と配列反復を使用して配列要素を交換する
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]
を保持しています。 スワッピングが開始されると、変数 a
は x
の要素を受け取り、x
は y
の要素を受け取ります。
最後のステップでは、y
は a
の内容を追加します。 結果は、スワップされた結果を推測します。
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)
出力:
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)
出力:
x[0] = 7
と y[0] = 4
の例を考えてみましょう。 7^4
を実行すると、7
に対応するビット パターンは 111
で、4
は 100
です。
最初の XOR
の後、011
を取得し、x[0]
として保存します。 次の XOR
には x[0] = 3 (011)
と y[0] = 100
があるため、この場合、y[0]
に格納される結果は 111 = 7
。
そして、x[0]
では、111^011 = 100 (4)
が得られます。 したがって、x
および y
配列の最初の要素が交換され、インデックス付き要素ごとにこの反復を繰り返すことができます。