ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScriptのディープコピーとシャローコピーの2つの方法 array_javascriptスキル

JavaScriptのディープコピーとシャローコピーの2つの方法 array_javascriptスキル

WBOY
WBOYオリジナル
2016-05-16 16:52:081919ブラウズ

例:

コードをコピーします コードは次のとおりです:
var arr = ["One ", "Two","Three"];

var arrto = arr;
arrto[1] = "test";
document.writeln("配列の元の値: " arr "< br />");//エクスポート: 配列の元の値: One,test,Three
document.writeln("配列の新しい値: " arrto "

上記のような直接代入方法は、多くの場合、私たちが望む結果ではありません。arr の値が変更されないことです。

方法 1: js スライス関数

コードをコピー コードは次のとおりです:

配列の場合、オブジェクトのスライス関数
は配列のセグメントを返します。 (配列のまま)
arrayObj.slice(start, [end])
パラメータ
arrayObj
必須。配列オブジェクト。
開始
必須。 arrayObj で指定された部分の開始要素は、0 から始まるインデックスです。
終了
オプション。 arrayObjで指定した部分の末尾の要素が0から始まるインデックスとなります。
説明
slice メソッドは、arrayObj の指定された部分を含む Array オブジェクトを返します。
slice メソッドは、end で指定された要素までコピーしますが、それは含まれません。 start が負の場合、それを length start として扱います。ここで、length は配列の長さです。 end が負の場合、長さは配列の長さである length end として扱われます。 end を省略した場合、slice メソッドは arrayObj の最後までコピーします。 start より end が出現した場合、要素は新しい配列にコピーされません。

例:
コードをコピーしますコードは次のとおりです:

var arr = ["One","Two","Three"];

var arrtoo = arr.slice(0);
arrtoo[1] = "マップを設定";
document.writeln("配列の元の値: " arr "
");//エクスポート: 配列の元の値: One,Two,Three
document.writeln("配列の新しい値: " arrtoo "
");//エクスポート: 配列の新しい値: One,set Map,Three

方法 2: js concat メソッド

コードをコピー コードは次のとおりです:

concat( ) メソッドは、2 つ以上の配列を連結するために使用されます。
このメソッドは既存の配列を変更せず、接続された配列のコピーのみを返します。
構文
arrayObject.concat(arrayX,arrayX,...,arrayX)
説明
新しい配列を返します。配列は、すべての arrayX パラメーターを arrayObject に追加することによって生成されます。 concat() の引数が配列の場合、配列ではなく配列内の要素が追加されます。
var arr = ["One","Two","Three"];

例:
コードをコピー コードは次のとおりです:

var arrtooo = arr.concat();
arrtooo[1] = "set Map To";
document.writeln("配列の元の値: " arr "
");//エクスポート: 配列の元の値: One,Two,Three
document.writeln("配列の新しい値: " arrtooo "
");//エクスポート: 配列の新しい値: One,set Map To,Three
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。