1

コードのリセットがはるかに簡単になるように、変数の元の情報を保持したいと考えています。

var $dataSets = [1,2,3,4];
var $oldData = $dataSets;

$('.button').click(function(){
    $(this).toggleClass('selected');
    if($(this).hasClass('selected')) {
        $dataSets.splice(1,1);
        console.log($dataSets);
    } else {
        console.log($oldData);
    }
});

私が自分のコードで抱えている問題は、変更するとコード$dataSetsも変更されること$oldDataです。$oldData変わらないようにするにはどうすればいいですか?

4

2 に答える 2

4

への変更

 var $dataSets = [1,2,3,4];
 var $oldData = $dataSets.slice();

JavaScript は の値を$dataSetsintoに渡すのではなく、それ自体が参照$oldDataするものへの参照を渡します。$dataSets

この回避策が機能するのは、JavaScript の配列 (つまり$dataSets) に呼び出されるメソッドがsliceあり、パラメーターを指定せずに呼び出すと、配列のコピーを返すためです。

于 2013-10-24T17:52:41.733 に答える
0

Array.slice()次のように関数を使用できます。

var $dataSets = [1,2,3,4];
var $oldData = $dataSets.slice();

ドキュメントで説明されているようにslice() 、元の配列は変更されませんが、新しい配列が返されます。したがって、基本的にスライスを使用すると、2 つの異なる配列があり、一方に干渉することなく項目を挿入/削除できます。

于 2013-10-24T18:03:07.987 に答える