アプリ版:「スタンプのみでお礼する」機能のリリースについて

2022のみconsole.logに表示されて2021が表示されません。
let result = JSON.stringify(allobj); にしてJSON.stringifyをまとめても、console.log(JSON.stringify(objA));console.log(JSON.stringify(objB));と分けてもダメでした。
打てる手はすべてやったと思っているのですが、どうすればいいんでしょうか…

<div class="selectbox">
<select name="top">
<option value="">年を選択</option>
<option value="op-a">2021</option>
<option value="op-b">2022</option>
</select>

<select name="op-a">
<option value="">2021グループから選択</option>
<option value="op-a-1">1</option>
<option value="op-a-2">2</option>
<option value="op-a-3">3</option>
<option value="op-a-4">4</option>
<option value="op-a-5">5</option>
<option value="op-a-6">6</option>
<option value="op-a-7">7</option>
<option value="op-a-8">8</option>
<option value="op-a-9">9</option>
<option value="op-a-10">10</option>
<option value="op-a-11">11</option>
<option value="op-a-12">12</option>
</select>



<select name="op-b">
<option value="">2022グループから選択</option>
<option value="op-a-1-1">1</option>
<option value="op-a-1-2">2</option>
<option value="op-a-1-3">3</option>
<option value="op-a-1-4">4</option>
<option value="op-a-1-5">5</option>
<option value="op-a-1-6">6</option>
<option value="op-a-1-7">7</option>
<option value="op-a-1-8">8</option>
<option value="op-a-1-9">9</option>
<option value="op-a-1-10">10</option>
<option value="op-a-1-11">11</option>
<option value="op-a-1-12">12</option>
</select>



<button type="button" id="selectbox-reset">リセット</button>

<style>
.selectbox select:not(select[name=top]) {
display:none;
}
</style>

<script>
window.addEventListener('load', function () {
//onchangeイベントの設定
document.querySelectorAll('.selectbox select').forEach(elm => {
elm.onchange = function () {
let elm2 = document.getElementsByName(this.value)[0];
if (elm2) {
elm.style.display = 'none';
elm2.style.display = 'block';
}
}
});
//リセットボタン
document.getElementById('selectbox-reset').onclick = function () {
document.querySelectorAll('.selectbox select').forEach(elm => {
if (elm.name == 'top') {
elm.style.display = 'block';
} else {
elm.style.display = 'none';
}
elm.selectedIndex = 0;
});
};
});

//オブジェクトを定義するvarは受け取る際にエラーが起きそう再宣言のできるletを選択
let objA = {
// プロパティを定義
// キー: 値
year: "2021",
month: "1,2,3,4,5,6,7,8,9,10,11,12",
};
let objB = {
// プロパティを定義
// キー: 値
year: "2022",
month: "1,2,3,4,5,6,7,8,9,10,11,12",
};

//オブジェクトをまとめる
let allobj = Object.assign(objA, objB);

//JSON.stringifyとは、JavaScriptのオブジェクトや値などのデータをJSONに変換するための関数
let result = JSON.stringify(objA,objB);
//変数「result」に代入
console.log(result);
</script>

A 回答 (2件)

No1です。



>2021と2022で別々にJSON化する必要があります。
JSONとしか書いてないので、どのような構造にしたいのかがさっぱりわかりません。

JSONになってさえいれば良いのであれば、No1に例示しておきました。
(無視なさっているみたいですが・・)
他の構造にしたければ、そのような構造になるようにすれば良い話です。
    • good
    • 2
この回答へのお礼

回答ありがとうございます。
無視したコメントをしてしまい申し訳ありません。オブジェクトを、JSON文字列に変換するために、「JSON.stringify(person)」と指定し、変数「result」に代入しておく必要があるため少し違う形になりました。

下記コードに致しました。
let result = JSON.stringify([objA,objB]);
console.log(result);

お礼日時:2022/07/08 00:16

こんばんは



console出力の話だけで良いものと解釈しました。
(他は見ていません)

どうやら、メソッドの内容を勘違いなさっているものと思います。
Object.assign は複数のオブジェクトを統合するのものです。
直後に、
 console.log ( 'objA=', objA);
 console.log ( 'objB=', objB);
とでもしてみれば、どうなっているかがわかるのではないかと思います。
https://developer.mozilla.org/ja/docs/Web/JavaSc …

まずは
// let allobj = Object.assign(objA, objB);
をコメントアウトしてみてください。その上で、


JSON.stringify() の第二引数は replacer で、文字列化する対象を制限するものです。
https://developer.mozilla.org/ja/docs/Web/JavaSc …

両方のオブジェクトをまとめて、stringify したいのなら、
 JSON.stringify([objA,objB])
とか。
とは言え、コンソールに出力するだけならJSON化する必要もないので、
 console.log(objA, objB);
でも十分かと思います。
    • good
    • 1
この回答へのお礼

回答ありがとうございます。
先に前提をお話ししますと、2段階式プルダウンを作成しています。
年月を指定して該当の記事を表示させる機能です。

archive.php(アーカイブページ)に配列を渡してSQLで該当ファイルを出力して表示させたいです。

Javascriptから直接配列を渡せないため、JSONでオブジェクトを文字にシリアライズしたいです。

オブジェクトをまとめて、stringify するコードを組んでしまいましたが、
2021と2022で別々にJSON化する必要があります。


下記のようにしたら表示されるんですが、変数「result」に代入しておく必要があるため困っております。

//オブジェクトを定義するvarは受け取る際にエラーが起きそう再宣言のできるletを選択
let objA = {
// プロパティを定義
// キー: 値
year: "2021",
month: "1,2,3,4,5,6,7,8,9,10,11,12",
};
let objB = {
// プロパティを定義
// キー: 値
year: "2022",
month: "1,2,3,4,5,6,7,8,9,10,11,12",
};

//JSON.stringifyとは、JavaScriptのオブジェクトや値などのデータをJSONに変換するための関数
console.log(JSON.stringify(objA));console.log(JSON.stringify(objB));

お礼日時:2022/07/07 23:34

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!