JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScriptで元の配列の値に影響を与えずに新しい配列を作成する方法

JavaScriptでは、元の配列に影響を与えることなく、既存の配列の値をコピーした新しい配列を作成したい場面がよくあります。この記事では、その具体的な実現方法をわかりやすく解説します。

元となる配列

まず、次のような配列があると仮定しましょう。

var listOfNames = ["John", "Mike", "Sam", "Carol"];

JSON.parse(JSON.stringify())を使った方法

JSON.parse(JSON.stringify()) を使うと、配列を一度文字列に変換してから再度パースすることで、完全に独立した新しい配列を作成できます。この方法なら、元の配列の値には一切影響を与えません。

コード例

function createNewArray(listOfNames) {
  return JSON.parse(JSON.stringify(listOfNames));
}

var listOfNames = ["John", "Mike", "Sam", "Carol"];
var namesArray = listOfNames.slice();

console.log("新しい配列=");
console.log(namesArray);

なお、上記の例では slice() メソッドも併用しています。slice() を引数なしで呼び出すと、配列全体の浅いコピー(シャローコピー)を簡単に作成できます。

プログラムの実行方法

上記のプログラムを実行するには、Node.jsで次のコマンドを使用します。ここでは、ファイル名を demo111.js として保存しています。

node demo111.js

実行結果

上記のコマンドを実行すると、コンソールに以下の出力が表示されます。

PS C:\Users\Amit\JavaScript-code> node demo111.js
新しい配列=
[ 'John', 'Mike', 'Sam', 'Carol' ]

補足:その他の配列コピー方法

配列を複製する方法は、ほかにもいくつかあります。

  • スプレッド構文[...listOfNames] と書くだけで簡潔にコピーできます。
  • Array.from()Array.from(listOfNames) を使って新しい配列を生成できます。

ただし、slice() やスプレッド構文によるコピーはすべて「浅いコピー」です。ネストされたオブジェクトまで完全に複製したい場合は、冒頭で紹介した JSON.parse(JSON.stringify()) や、ES2022で導入された structuredClone() の利用を検討するとよいでしょう。

  1. JavaScriptのArray.values()メソッドとは?使い方とサンプルコードを徹底解説

    JavaScriptのArray.values()メソッドとは? JavaScriptのArray.values()メソッドは、対象の配列に含まれるすべての値を格納したイテレーターオブジェクトを返します。ES2015(ES6)以降で利用可能なこのメソッドは、for...ofループやスプレッド構文([...arr])と組み合わせることで、配列の各要素を効率的に取り出せます。 なお、keys()やentries()がインデックス情報も一緒に返すのに対し、values()は純粋に「値」だけを順番に提供する点が大きな特徴です。 基本構文 arr.values() 引数は不要で、戻り値として新しいArr

  2. JavaScriptでJSON配列からデータを読み取る方法をサンプルコード付きで解説

    Web開発では、APIから取得したJSONデータを処理する場面が非常によくあります。本記事では、JavaScriptを使ってJSON配列からデータを読み取り、画面に表示する方法を、実際に動作するサンプルコードとともにわかりやすく解説します。 JSON配列からデータを読み取る基本の流れ JSON形式の文字列をJavaScriptで扱うには、まずJSON.parse()メソッドで文字列をJavaScriptのオブジェクト(配列)に変換します。変換後は、forEach()メソッドなどを活用して、配列の各要素に格納された値へ簡単にアクセスできます。 サンプルコード <!DOCTYPE htm