lodash を用いたクローンの作成

ここでは loash ライブラリを利用してあるオブジェクトのクローンを作成する例を示します。

プロジェクトの準備と lodash のインストール

Node.js 向けの TypeScript プロジェクト作成方法」を元にプロジェクトを作成します。

またプロジェクト内にソースコード index.ts を作成します。

次のコマンドで lodash をインストールします。

$ npm install --save lodash
$ npm install --save @types/lodash

ディープコピーによるクローンの作成

ディープコピーによるクローンを作成するためには、lodash ライブラリの cloneDeep メソッドが使えます。

import * as _ from 'lodash';

const p1 = {
    favoriteFoods: ['Chinese', 'Italian'],
    name: 'Suzuki',
};

console.log('--- 1 ---');

const p2 = _.cloneDeep(p1);

console.log(p1);
console.log(p2);

console.log('--- 2 ---');

p2.name = 'Yamada';

console.log(p1);
console.log(p2);

console.log('--- 3 ---');

p2.favoriteFoods[1] = 'Ramen';

console.log(p1);
console.log(p2);

このコードを次のコマンドでビルドします。

$ npm run build

ビルドが成功すると dist フォルダに index.js が作成されます。

index.js を実行するには次のようにします。

$ node ./dist/index.js

この実行結果は次のようになりました。

--- 1 ---
{ favoriteFoods: [ 'Chinese', 'Italian' ], name: 'Suzuki' }
{ favoriteFoods: [ 'Chinese', 'Italian' ], name: 'Suzuki' }
--- 2 ---
{ favoriteFoods: [ 'Chinese', 'Italian' ], name: 'Suzuki' }
{ favoriteFoods: [ 'Chinese', 'Italian' ], name: 'Yamada' }
--- 3 ---
{ favoriteFoods: [ 'Chinese', 'Italian' ], name: 'Suzuki' }
{ favoriteFoods: [ 'Chinese', 'Ramen' ], name: 'Yamada' }

この結果、確かにコピーした先の p2 への変更は、 元のオブジェクト p1 に全く影響していないことがわかります。

ここまでお読みいただき、誠にありがとうございます。SNS 等でこの記事をシェアしていただけますと、大変励みになります。どうぞよろしくお願いします。

© 2024 Node.js 入門