1. ホーム
  2. arrays

[解決済み] Javascript/Typescriptで配列のクローンを作成する

2022-08-13 19:49:13

質問

2つのオブジェクトからなる配列があります。

genericItems: Item[] = [];
backupData: Item[] = [];

HTML テーブルに genericItems というデータで構成されています。このテーブルは変更可能です。で行った変更を元に戻すためのリセットボタンがあります。 backUpData . この配列は、サービスによって入力されます。

getGenericItems(selected: Item) {
this.itemService.getGenericItems(selected).subscribe(
  result => {
     this.genericItems = result;
  });
     this.backupData = this.genericItems.slice();
  }

私のアイデアは、ユーザーの変更が最初の配列に反映され、2番目の配列はリセット操作のためのバックアップとして使用できることでした。ここで私が直面している問題は、ユーザーがテーブルを変更したとき ( genericItems[]) を変更すると、2 番目の配列 backupData も変更されます。

どのような現象が起きているのか、またこれを防ぐにはどうしたらよいのでしょうか。

どのように解決するのですか?

オブジェクトのクローンを作成します。

const myClonedObject = Object.assign({}, myObject);

配列のクローンを作成します。

  • オプション1 は、プリミティブ型の配列を持っている場合。

const myClonedArray = Object.assign([], myArray);

  • オプション2 - オブジェクトの配列がある場合。
const myArray= [{ a: 'a', b: 'b' }, { a: 'c', b: 'd' }];
const myClonedArray = [];
myArray.forEach(val => myClonedArray.push(Object.assign({}, val)));