【Amazon】人気の商品が日替わりで登場!
毎日お得なタイムセール!商品をみる

jQueryで配列やオブジェクトをコピーする方法

本記事では、jQueryで配列やオブジェクトをコピーする方法について解説しています。

JavaScriptの学習におすすめ書籍
1冊ですべて身につくJavaScript入門講座
総合評価
( 5 )
メリット
  • 誰でも分かるように嚙み砕いて説明してくれる
  • アニメーションの知識が深く学べる
  • 1つのWebサイトを作りながら学べる
楽天ブックス
¥2,794 (2024/04/28 02:24時点 | 楽天市場調べ)
先輩くん

Amazon Kindle Unlimitedに登録すると、月額980円で読み放題だからオススメだよ!

後輩ちゃん

初回30日間は無料だから、まだ登録したことのない人はぜひ試してみてね!

全プログラマー必見!
変数名/関数名にもう悩まない!
リーダブルコード
総合評価
( 5 )
メリット
  • 美しいコードが書けるが自然と書けるようになる
  • 他の開発者が理解しやすいコードになる
著:Dustin Boswell, 著:Trevor Foucher, 解説:須藤 功平, 翻訳:角 征典
¥2,640 (2023/07/23 02:48時点 | Amazon調べ)
目次

配列とオブジェクトをコピーする

配列やオブジェクトをコピーする場合、パッと思いつく方法は変数にコピーしたい配列やオブジェクトを代入すればコピーできるっしょ!と思う方が多いと思います。(下記のようなコード)

let numberArr = [1,2,3];
let numberArrCopy = numberArr;

console.log(numberArr); // -> [1,2,3]
console.log(numberArrCopy); // -> [1,2,3]

変数には同じ配列がコピーされているため、一見問題ないように思えますがこのコピーの仕方ではどちらかに変更があった際、両方の値が変更されてしまいます。(参照先が両方とも同じなため)

let numberArr = [1,2,3];
let numberArrCopy = numberArr;

numberArr[2] = 4;
console.log(numberArr); // -> [1,2,4] コピー元まで変更されている...
console.log(numberArrCopy); // -> [1,2,4]

このようにならないようにするには、配列やオブジェクトのコピーを参照渡しではなく値渡しでコピーする必要があります。

extendメソッド

配列とオブジェクトをコピーするには、extendメソッドを使います。

jQuery.extend(空の配列またはオブジェクト, コピー元)

本来extendメソッドは配列やオブジェクトを結合するのに使われますが、第一引数のtargetに配列をコピーしたい場合は空の配列「[]」を指定し、オブジェクトをコピーしたい場合は空のオブジェクト「{}」を指定することで値渡しコピーすることができます。

/* 配列のコピー */
let fruits = ["りんご","ばなな","ぶどう"];
let fruitsCopy = $.extend([], fruits);

fruitsCopy[0] = "いちご";
console.log(fruitsCopy); // -> ["いちご","ばなな","ぶどう"]
console.log(fruits); // -> ["りんご","ばなな","ぶどう"]
/*オブジェクトのコピー */
let person = {
  id:1,
  name:"Taro",
  age:20
}

let personCopy = $.extend({}, person);
personCopy.age = 25;

console.log(person); // -> { id:1, name:"Taro", age:20 }
console.log(personCopy); // -> { id:1, name:"Taro", age:25 }

ブログランキング・にほんブログ村へ PVアクセスランキング にほんブログ村 FC2 Blog Ranking

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次