チェックボックスに複数チェックができない

お世話になりますTMと申します。最近仕事でkintoneを触り始めた初心者です。

有識者の皆様のお力をお借り出来たらと思い、投稿させていただきます。

何卒よろしくお願いいたします。

実現したい事:3つのフィールド(文字列1行)に入力した文字と、同じ文字がチェックボックスでチェックされるようにしたい

やったこと:3つのフィールドに対して、下記のコード

 

record[‘文字列3’][‘value’] === void 0 ? record[‘チェックボックス’][‘value’] = [] : record[‘チェックボックス’][‘value’] = [${record['文字列3']['value']}];
record[‘文字列2’][‘value’] === void 0 ? record[‘チェックボックス’][‘value’] = [] : record[‘チェックボックス’][‘value’] = [${record['文字列2']['value']}];
record[‘文字列1’][‘value’] === void 0 ? record[‘チェックボックス’][‘value’] = [] : record[‘チェックボックス’][‘value’] = [${record['文字列1']['value']}];

 

を実施しましたが、ご想像の通り、最後の文字列1のみ反映され、

文字列2及び文字列3を入力していた場合にそれが反映されません。

つきましては、上記の表現方法でなく、複数の文字列を入力しても複数チェックされるようにする方法をご教示いただきたく存じます。

有識者の皆様にお力添えいただけると幸いです。

 

P.S. 今回なぜ文字列の値をチェックボックスにまとめようとしたかと申しますと、ひとつのグラフにしたいためです。現状、文字列に対するレコード数をグラフ化しようとすると、文字列1、文字列2、文字列3とそれぞれに対するグラフしかできないため、なんとかそれをひとつの文字列にまとめ、グラフをひとつにしたかったことが、今回コードをいじろうとした経緯となります。

TM様

チェックボックスは配列なので,追加するのであればpushを使うと良いかと思います.
また,文字列3~1がそれぞれvoid 0 の場合,その都度チェックボックスが空になるので,
文字列3~1がvoid 0の場合どうするのか(空文字列をいれるのか,無視して詰めるのか)によって対処が変わります.
下記は文字列3~1が空欄の場合は無視し,空欄でない場合はチェックボックスの対応する項目にチェックを入れるようにしています.

if(record['文字列3']['value'] !== void 0){record['チェックボックス']['value'].push(`${record['文字列3']['value']}`);}
if(record['文字列2']['value'] !== void 0){record['チェックボックス']['value'].push(`${record['文字列2']['value']}`);}
if(record['文字列1']['value'] !== void 0){record['チェックボックス']['value'].push(`${record['文字列1']['value']}`);}

文字列が空の場合は無視するので,三項演算子を使わずにif分岐にして,チェックボックスの配列にpushするようにしています.
これは,文字列3~1に入力されたものとチェックボックス内にある項目が同一であることを前提にしています.
(個人的には手入力にしないほうが良いような気もします)

なお,上記コードではフィールド名が頻繁にでてきますが,下記のような書き方もできます.
あとでフィールドコードが変わっても直すところが少なく済んで,ちょっとだけ文字量も減らせます.
(文字量が少ない≒書き間違いを減らせる)

const arrVal = [];
['文字列3','文字列2','文字列1'].forEach((fld) => {
  if(record[fld]['value'] !== void 0){
    arrVal.push(`${record[fld]['value']}`);
  }
});
record['チェックボックス']['value'] = arrVal;

上記は,forEachを使って文字列3~1に対してループ処理を行っています.
都度チェックボックスにpushしないで,配列にpushしておいて最後にチェックボックスに格納することで,
同じようなコードを極力減らすようにしています.
参考になれば幸いです.

このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。