2016-08-15 5 views
0

の配列へのオブジェクトの配列に文字列を変換します。ここでは、配列は次のようになります。は、私は誰かがそれから数字の配列を取得するために私を助けることができ、文字列値として、いくつかのプロパティを持つオブジェクトの配列を持っている数字

scores = [ 
       { 
        maxScore:"100" 
        obtainedScore:"79" 
        passed:"pass" 
        subject:"Maths" 
       }, 
       { 
        maxScore:"100" 
        obtainedScore:"73" 
        passed:"pass" 
        subject:"Science" 
       }, 
       { 
        maxScore:"100" 
        obtainedScore:"82" 
        passed:"pass" 
        subject:"English" 
       } 
      ] 

は、私はこの

for (var i =0 ; i < score.length; i++) 
{ 
    var marks[i] = parseInt(score[i].obtainedScore) ; 
} 

を試してみましたが、私がNaNを見つけ、これらのオブジェクトから取り出し、二つの異なる配列

にそれらを配置する必要がありますmaxScoreobtainedScoreをしたいです。

+3

これはオブジェクトの配列のかなり単純な反復であるため、どのコードを試したのか不思議です。 – jfriend00

+0

私はこれを試しました(var i = 0; i

+0

あなたの質問にそのコードを入れてください。あなたはいつもあなたが試したことを見せてください。 – jfriend00

答えて

0

私はあなたが出力になりたいものを100%わからないけど:

私はobtainedScoreとmaxScoreは、これらの オブジェクトから取り出し、二つの異なる配列

にそれらを配置する必要がありますしたいです
var arrScore = [], 
     arrMax = []; 

    scores.forEach(i => { 
     arrScore.push(!isNaN(parseInt(i.obtainedScore)) ? parseInt(i.obtainedScore) : 0); 
     arrMax.push(!isNaN(parseInt(i.maxScore)) ? parseInt(i.maxScore) : 0); 
    }); 

これは基本的に、個々のスコア値を含む2つの配列arrScoreと最大スコアの配列を含むarrMaxを作成します。我々は、配列を反復し、それぞれの配列に値をプッシュforEach機能を使用

。このため、型が有効な整数であることも確認しています。

1

プロジェクションのマッピングはどうですか?

var maxScores = scores.map(score => parseInt(score.maxScore, 10)) 
var obtainedScores = scores.map(score => parseInt(score.obtainedScore, 10)) 
+2

文字列から数値に変換する必要があります。私はアプローチの一般的な単純さが好きです。 – jfriend00

+0

ああ、もちろん。それを完全に見落とした。文字列が数字を表していると仮定すると、 'parseInt'を追加するのに十分であるはずです – user6716617

+0

'parseInt()'を使うときはradix引数を含めることをお勧めします。または単に 'score => + score.maxScore'を使うこともできます。 – jfriend00

0

scores = [ 
 
       { 
 
        maxScore:"100", 
 
        obtainedScore:"79", 
 
        passed:"pass", 
 
        subject:"Maths" 
 
       }, 
 
       { 
 
        maxScore:"100", 
 
        obtainedScore:"73", 
 
        passed:"pass", 
 
        subject:"Science" 
 
       }, 
 
       { 
 
        maxScore:"100", 
 
        obtainedScore:"82", 
 
        passed:"pass", 
 
        subject:"English" 
 
       } 
 
      ]; 
 
      maxScoreArray = new Array(); 
 
      obtainedScoreArray = new Array(); 
 

 
      for (var i = scores.length - 1; i >= 0; i--) { 
 
      \t maxScoreArray.push(Number(scores[i].maxScore)); 
 
      \t obtainedScoreArray.push(Number(scores[i].obtainedScore)); 
 
      } 
 

 
      console.log(maxScoreArray); 
 
      console.log(obtainedScoreArray);

1
  1. YOUR ATTEMPTに基づいて正しいANSWER:

    var scores = [{ 
     
         maxScore: "100", 
     
         obtainedScore: "79", 
     
         passed: "pass", 
     
         subject: "Maths" 
     
        }, { 
     
         maxScore: "100", 
     
         obtainedScore: "73", 
     
         passed: "pass", 
     
         subject: "Science" 
     
        }, { 
     
         maxScore: "100", 
     
         obtainedScore: "82", 
     
         passed: "pass", 
     
         subject: "English" 
     
        }] 
     
        var marks = []; 
     
        for (var i = 0; i < scores.length; i++) { 
     
         marks[i] = parseInt(scores[i].obtainedScore, 10); 
     
        } 
     
        console.log(marks)

  2. MY SOLN(あなたの試みでeditted前から)

var scores = [{ 
 
     maxScore: "100", 
 
     obtainedScore: "79", 
 
     passed: "pass", 
 
     subject: "Maths" 
 
    }, { 
 
     maxScore: "100", 
 
     obtainedScore: "73", 
 
     passed: "pass", 
 
     subject: "Science" 
 
    }, { 
 
     maxScore: "100", 
 
     obtainedScore: "82", 
 
     passed: "pass", 
 
     subject: "English" 
 
    }] 
 

 
    function decoupler(arr, prop) { 
 
     return arr.map(function(item, index) { 
 
     return parseInt(item[prop], 10); 
 
     }); 
 
    } 
 
    var arr1 = decoupler(scores, "maxScore"); 
 
    var arr2 = decoupler(scores, "obtainedScore"); 
 

 
    console.log(arr1); 
 
    console.log(arr2);

編集:comment by jfriend00に基づいてparseInt()を追加しました基数パラメータ。

関連する問題