2017-01-09 13 views
-1

次のJSONファイルの部分があります。純粋なJavascriptを使用してJavascript配列に変換する必要があります。具体的には、 useridmovieidratingtimestampの場合は、rating4.0より大きい場合のみです。純粋なJavascriptを使用してJSONをJavascript配列に変換する

[{ 
    "rating": 3.0, 
    "ratingsPK": { 
     "movieId": 2017, 
     "userId": 610 
    }, 
    "timestamp": 913815387 
}, { 
    "rating": 5.0, 
    "ratingsPK": { 
     "movieId": 2017, 
     "userId": 654 
    }, 
    "timestamp": 959098930 
}, { 
    "rating": 4.0, 
    "ratingsPK": { 
     "movieId": 2017, 
     "userId": 856 
    }, 
    "timestamp": 1059863336 
}, { 
    "rating": 2.0, 
    "ratingsPK": { 
     "movieId": 2017, 
     "userId": 903 
    }, 
    "timestamp": 903628492 
}, { 
    "rating": 3.5, 
    "ratingsPK": { 
     "movieId": 2017, 
     "userId": 1185 
    }, 
    "timestamp": 1100560205 
}] 
+3

だけでなく、希望の結果を追加してください、と何をしようとしています。 –

+0

'JSON.parse、Array.forEachを使ってArrayにプッシュします。私の答えをチェックする –

答えて

0

あなたはXMLHttpRequestを使用してJSONファイルを読むことができますし、それが文字列として返し、あなたが変数にファイルデータを持って想像します。 jsonFile

JSON.parseを以下のように使用してください。

var rating = JSON.parse(jsonFile); 

以下は、実施例である。

var rating = [ 
 
     {"rating":3.0,"ratingsPK":{"movieId":2017,"userId":610},"timestamp":913815387}, 
 
     {"rating":5.0,"ratingsPK":{"movieId":2017,"userId":654},"timestamp":959098930}, 
 
     {"rating":4.0,"ratingsPK":{"movieId":2017,"userId":856},"timestamp":1059863336}, 
 
     {"rating":2.0,"ratingsPK":{"movieId":2017,"userId":903},"timestamp":903628492}, 
 
     {"rating":3.5,"ratingsPK":{"movieId":2017,"userId":1185},"timestamp":1100560205} 
 
]; 
 
    
 
    var bestRated = []; 
 
    
 
    rating.forEach(function (item) { 
 
     if(item.rating > 4) { 
 
     bestRated.push({ 
 
      userid: item.ratingsPK.userId, 
 
      movieid: item.ratingsPK.movieId, 
 
      rating: item.rating, 
 
      timestamp: item.timestamp 
 
     }); 
 
     } 
 
    }); 
 
    
 
    console.log('bestRated: ', bestRated);

3

JSON.parse()を使用すると、JSON文字列をJavaScriptオブジェクトに変換できます。次に適切な述語を使用してArray#filterを使用して、必要なものを正確に取得します(あなたのケースでは、timestampは4より大きい)。

1

JSON.parse()Array.prototype.filter()関数を使用して単純な "一行" 溶液:

var json_data = '[{"rating":3.0,"ratingsPK":{"movieId":2017,"userId":610},"timestamp":913815387},{"rating":5.0,"ratingsPK":{"movieId":2017,"userId":654},"timestamp":959098930},{"rating":4.0,"ratingsPK":{"movieId":2017,"userId":856},"timestamp":1059863336},{"rating":2.0,"ratingsPK":{"movieId":2017,"userId":903},"timestamp":903628492},{"rating":3.5,"ratingsPK":{"movieId":2017,"userId":1185},"timestamp":1100560205}]'; 
 
    
 
var arr = JSON.parse(json_data).filter(function(o){ return o.rating >= 4; }); 
 
console.log(arr);

同じであるが(矢印関数を使用して)EcmaScript6方法で:

var json_data = '[{"rating":3.0,"ratingsPK":{"movieId":2017,"userId":610},"timestamp":913815387},{"rating":5.0,"ratingsPK":{"movieId":2017,"userId":654},"timestamp":959098930},{"rating":4.0,"ratingsPK":{"movieId":2017,"userId":856},"timestamp":1059863336},{"rating":2.0,"ratingsPK":{"movieId":2017,"userId":903},"timestamp":903628492},{"rating":3.5,"ratingsPK":{"movieId":2017,"userId":1185},"timestamp":1100560205}]'; 
 
     
 
var arr = JSON.parse(json_data).filter((o) => o.rating >= 4); 
 
console.log(arr);

1

の評価のためのオブジェクトとフィルタに変換した後、あなたがオブジェクトの部分だけを取って、配列を得ることができる、あなたが必要です。

var data = '[{"rating":3.0,"ratingsPK":{"movieId":2017,"userId":610},"timestamp":913815387},{"rating":5.0,"ratingsPK":{"movieId":2017,"userId":654},"timestamp":959098930},{"rating":4.0,"ratingsPK":{"movieId":2017,"userId":856},"timestamp":1059863336},{"rating":2.0,"ratingsPK":{"movieId":2017,"userId":903},"timestamp":903628492},{"rating":3.5,"ratingsPK":{"movieId":2017,"userId":1185},"timestamp":1100560205}]', 
 
    result = JSON.parse(data).filter(function (a) { 
 
     return a.rating > 4; 
 
    }).map(function (a) { 
 
     return [a.ratingsPK.userId, a.ratingsPK.movieId, a.rating, a.timestamp]; 
 
    }); 
 

 
console.log(result);

0

JSON.parse()は、JSオブジェクトにJSONを変換するために使用することができます。以下はあなたのニーズに合った例です。

var data='[{"rating":1.0,"ratingsABC":{"movieId":2017,"userId":123},"timestamp":913815387},{"rating":1.0,"ratingsABC":{"movieId":2017,"userId":123},"timestamp":913815387},{"rating":1.0,"ratingsABC":{"movieId":2017,"userId":123},"timestamp":913815387}]'; 
var sortedData= JSON.parse(data).filter((a) => a.rating >= 4); 
0

これはどんな派手なAPIを使用せずに、次のとおりです。

var jsonArr = [ 
    {"rating":3.0,"ratingsPK":{"movieId":2017,"userId":610},"timestamp":913815387}, 
    {"rating":5.0,"ratingsPK":{"movieId":2017,"userId":654},"timestamp":959098930}, 
    {"rating":4.0,"ratingsPK":{"movieId":2017,"userId":856},"timestamp":1059863336}, 
    {"rating":2.0,"ratingsPK":{"movieId":2017,"userId":903},"timestamp":903628492}, 
    {"rating":3.5,"ratingsPK":{"movieId":2017,"userId":1185},"timestamp":1100560205}]; 

var arr = []; 

for(var x in jsonArr){ 
    if(jsonArr[x]['rating'] > 4.0){ 
     arr.push(jsonArr[x]['ratingsPK']['userId']); 
     arr.push(jsonArr[x]['ratingsPK']['movieId']); 
     arr.push(jsonArr[x]['rating']); 
     arr.push(jsonArr[x]['timestamp']); 
    } 
} 
console.log(arr); 
関連する問題