我有一系列考试成绩,它包含考试的日期和成绩。我想将所有等级放在一个数组中,将日期放在另一个数组中,这样我就可以在chart.js应用程序中绘制它们。我怎么能分开他们?
结果数组示例布局:
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
}
我的项目上安装了Jquery,是否可以使用.each
功能实现此目的?
答案 0 :(得分: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);
&#13;
您也可以使用arrow
个功能。
let grades=results.map(a => a.grade);
答案 1 :(得分:0)
您需要从数组元素中获取字段的值。检查一下:
% cat json_text.txt | tr -d '[:space:]'
答案 2 :(得分:0)
如果results
是一个数组,则在此行中
for (members in results) {
members
基本上是索引值 0,1,..
所以members[0]
将为undefined
我在我的项目上安装了Jquery,可以使用.each功能 用来实现这个目标?
是的,但为什么不使用原生forEach
代替
var dateArray = [], gradeArray = [];
results.forEach( function( result ){
dateArray.push( result.examDate );
gradeArray.push( result.grade );
});
答案 3 :(得分:0)
考虑到结果数组具有以下形状:
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);
});