JavaScriptでJsonに格納されているデータを取得したい。
が、途中でundefinedとなってしまい、立ち行かなくなってしまった。
実現したいこと
複数存在するデータの中からランダムに取り出したいので、regionの数を取得して、
その数の乱数を出力し、対応するデータの中身を取り出したい。
発生している問題・エラーメッセージ
const max = num.region.length ^ TypeError: Cannot read property 'length' of undefined
該当のソースコード
JavaScript
1const dummy = require("./dummy,json"); 2const num =dummy.hoge.filter(function(item, index){ 3 if(item.no == "001") return true; 4 }); 5 for( var i = 0; i < num.length; i++ ){ 6 console.log(JSON.stringify(num[i].date)); 7 const p = JSON.stringify(num[i].date); 8 const max = num.region//.length 9 const array = [] 10 console.log(max); 11 12 array.push(Math.floor(Math.random() * max) + 1); 13 14 const regclass = num.filter(function(item, index){ 15 if(num.region == num + array) return true; 16 }); 17 console.log(regclass); 18 }
Json
1{ 2 "hoge":[ 3 { 4 "no":"001", 5 "date":[ 6 { 7 "region":"001-1", 8 "detail":{ 9 "name":"タナカ", 10 "type":"C", 11 "weight":"40kg", 12 "height":"177m", 13 }, 14 "region":"001-2", 15 "detail":{ 16 "name":"ヨシダ", 17 "type":"C", 18 "weight":"53kg", 19 "height":"164m", 20 }, 21 "region":"001-3", 22 "detail":{ 23 "name":"サトウ", 24 "type":"C", 25 "weight":"70kg", 26 "height":"180m", 27 } 28 } 29 ] 30 } 31 ] 32}
試したこと
Json内の[]を外し、動作を確認。
num[i].date.regionでも同様にエラーが出るので、そもそもjsonに理解が足りていない気がするのですが、検索してもそれらしい答えに辿り着けず…。
補足情報(FW/ツールのバージョンなど)
node v12
追記. 10/22 20:10
指摘された通り、JSONに対する理解不足で詰まってました。
解決致しましたので、質問箇所以外のコードについても丁寧に指摘いただいた方をBAとして閉めさせていただきます。
ありがとうございました。
回答2件
あなたの回答
tips
プレビュー