2017-10-24 1 views
0

私は試験結果の配列を持っています。試験に合格した日付と成績が達成されています。 1つの配列にすべての成績を入れ、別の配列に日付を入れたいので、chart.jsアプリケーションでそれらをプロットすることができます。どのように私はそれらをseparteできますか?アレイから配列を取り込めないJS

結果アレイのレイアウト例:私はjQueryの私のプロジェクトにインストールされている

Results{ 

[0] {examDate: "2017-10-16T10:30:00", <ResultEntry>grade: A} 

[1] {examDate: "2017-15-16T11:00:00", <ResultEntry>grade: C} 

[2] {examDate: "2017-16-16T11:30:00", <ResultEntry>grade: B} 

[3]{examDate: "2017-20-16T12:00:00", <ResultEntry>grade: B} 

} 

しかし、私がしようとすると、二つの新しい配列

var dateArray; 
var gradeArray; 
var counter = 0; 

for (members in results) { 
    dateArray[counter] = members[0]; 
    gradeArray[counter] = members[1]; 
    counter++;//increment storage index 
} 

を移入しませんが.each機能が達成するために使用することができますこの?

+0

'dateArray [counter] = members.examDate'と' dateArray [counter] = members.grade'を試してみてください。 – Walk

答えて

3

コールバック機能を渡してmapメソッドを使用することができます。

map()メソッドは呼び出しアレイ内every要素に設け関数(コールバック)を呼び出しの結果を使用して新しい配列を作成します。

let results=[{examDate: "2017-10-16T10:30:00", grade: 'A'},{examDate: "2017-15-16T11:00:00", grade: 'C'},{examDate: "2017-16-16T11:30:00", grade: 'B'},{examDate: "2017-20-16T12:00:00", grade: 'B'}]; 
 
let dates=results.map(function(a){ 
 
    return a.examDate; 
 
}); 
 
let grades=results.map(function(a){ 
 
    return a.grade; 
 
}); 
 
console.log(dates); 
 
console.log(grades);

またarrow機能を使用することができます。

let grades=results.map(a => a.grade); 
0

フィールドの値を配列要素から取得する必要があります。このチェック:

var dateArray = []; 
var gradeArray = []; 
var counter = 0; 

for (var member in results) { 
    dateArray.push(member.examDate); 
    gradeArray.push(member.grade); 
} 
0

resultsが配列である場合は、この行に

for (members in results) { 

membersは基本的にインデックス値0,1です..

のでmembers[0]意志be undefined

私は自分のプロジェクトにインストールされているJqueryを持っています。それぞれの機能は にすることができますか?

はい、しかし、なぜ結果の配列は、以下の形状を有していることを考慮代わりに

var dateArray = [], gradeArray = []; 
results.forEach(function(result){ 
    dateArray.push(result.examDate); 
    gradeArray.push(result.grade); 
}); 
0

をネイティブforEachを使用しない:

let results = [ 
    { examDate: "2017-10-16T10:30:00", grade: 'A' }, 
    { examDate: "2017-15-16T11:00:00", grade: 'C' }, 
    { examDate: "2017-16-16T11:30:00", grade: 'B' }, 
    { examDate: "2017-20-16T12:00:00", grade: 'B' } 
]; 

Array.prototype.mapは、この目的のために最適です。

let dateArray = results.map(result => result.examDate); 
let gradeArray = results.map(result => result.grade); 

また、いくつかの異なる方法で要素をループすることができます

let dateArray = [], 
    gradeArray = []; 

for (let result of results) { 
    dateArray.push(result.examDate); 
    gradeArray.push(result.grade); 
} 

とあなたに似たソリューション:

var dateArray = [], 
    gradeArray = []; 

for (var i = 0; i < results.length; i++) { 
    dateArray[i] = results[i].examDate; 
    gradeArray[i] = results[i].grade; 
} 

また、配列に代わりのに位置を設定し、それらをプッシュすることができます値:

var dateArray = [], 
    gradeArray = []; 

for (var i = 0; i < results.length; i++) { 
    dateArray.push(results[i].examDate); 
    gradeArray.push(results[i].grade); 
} 

とjQuery を使用して、あなたのように各は言及:

var dateArray = [], 
    gradeArray = []; 

$.each(results , function(i, value) { 
    dateArray.push(value.examDate); 
    gradeArray.push(value.grade); 
}); 
関連する問題