どうも。櫻庭です。
今回は、配列のデータ処理について書き留めていきたいと思います。
配列のデータ処理についてについては自分自身まだ勉強中ではありますが、これまで学んできて、実際にコードを書いてきて感じたことや、学習したことを掲載します。
データ処理について
スプレッドシートから配列として取得したあるデータ処理して、別のスプレッドシートに貼り付けるという処理をすることがGASを触る上ではよくあると思います。
そのような配列のデータ処理をする上で考えるべきだと思うポイントや、こう考えるとスムーズにコード書きを進められるような考え方について今回は紹介したいと思います。
ただ今回紹介する内容は、個人的見解も含まれているものもありますので、1つの意見として参考程度に捉えてもらえればと思います。
実例
const objArray = [
{name : "ANA", carrier: "flagship", Code : "NH", alliance : "star"},
{name : "JAL", carrier: "flagship", Code : "JL", alliance : "oneworld"},
{name : "Jetstar", carrier: "LCC", Code : "JS", alliance : "None"}
];
例えば、上のような配列があったとして、キャリアが正規キャリアの場合は「荷物預け無料」、LCCの場合は「荷物預け有料」という値を配列に追加したい場合には以下のようなコードを自分なら書きます。
for(const element of Object.keys(objArray)){
if(objArray[element]["carrier"] === "flagship"){
Object.assign(objArray[element],{ luggage : "free"})
}else{
Object.assign(objArray[element],{ luggage : "surcharge"})
}}
console.log(objArray);
result:[
{ name: 'ANA',
carrier: 'flagship',
Code: 'NH',
alliance: 'star',
luggage: 'free' },
{ name: 'JAL',
carrier: 'flagship',
Code: 'JL',
alliance: 'oneworld',
luggage: 'free' },
{ name: 'Jetstar',
carrier: 'LCC',
Code: 'JS',
alliance: 'None',
luggage: 'surcharge' }
];
このようにコードを書くことでそれぞれの条件にあったObject Arrayを追加することができます。
ポイント
このようにループをさせるのであれば、map()メソッドを使うこともできます。
ただ、今回のように条件が単純であればよいのですが、実際のデータ処理では追加するObjectArrayがもっと多かったり、条件が複雑だったり、その他配列の削除や追加などがあったりします。 そのような複雑な条件を無理にMap()メソッドやアロー関数を使って1行で書こうとすると仮にかけたとしてもその後のメンテナンス性が非常に悪くなるため、
データ処理の際はfor文(forof文)、if文をこのように活用されることをオススメします。
まとめ
配列のデータ処理をする際は、for文とif文をどう活用できるか?ということがキーとなります。 また、このif文でどのような条件を入れるか、その後の処理をどうするかということについては、実際に自分が作業したときに頭の中でどういうことを考えて作業するかということを思い浮かべながら書いていくと割とすんなり書けたりしますよ!
Comments