プロが教えるわが家の防犯対策術!

const user = [{
"id": 1,
"name": "Yamada",
"age": 22,
"sex": "Male"
}];
for(const [key, value] of Object.entries(user)) {
console.log(key, value);
console.log(`KEY is ${key} VALUE is ${value}`);
}

上記コードなのですが、以下のようにコンソールに出力されます。

0 {id: 1, name: 'Yamada', age: 22, sex: 'Male'}
KEY is 0 VALUE is [object Object]

なぜ、異なる出力になるのかがわからずです。

教えてください !

A 回答 (2件)

こんばんは



期待なさっている出力が何なのかがわかりませんが、userは配列オブジェクトなので、ご例示のような使い方はあまりしないような気がしますけれど・・

ご例示の場合ですと、keyは0、valueは id以下の内容を持つオブジェクトになるようですが、コンソール出力の場合、直接出力では、オブジェクトはご例示のようにJSON表記で出力されます。
(・・と言うよりも、オブジェクトとしてそのまま出力されていると言った方がよさそう)

一方で、テンプレートリテラルで出力する場合には、文字列化されますので、valueの値はvalue.toString() として出力され、[object Object] になっていると思われます。
(対象は同じですが、出力形式が異なっているということ)


ループの制御を、
for(const [key, value] of Object.entries(user[0])) {
console.log(key, value);
console.log(`KEY is ${key} VALUE is ${value}`);
}
に変えてみれば、わかりやすいかもしれません。
    • good
    • 0
この回答へのお礼

ありがとうございます !

お礼日時:2022/06/16 14:47

文字列とオブジェクトでは型が違うからだと思います。


オブジェクトを文字列にして出力しようとしてもできないので
[object Object]
と出力されてしまうのではないでしょうか。

console.log(`KEY is ${key} VALUE is ${JSON.stringify(value)}`);
のようにすれば、文字列になって出力されると思います。
    • good
    • 0
この回答へのお礼

ありがとうございます !

お礼日時:2022/06/16 14:47

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