我有一个数组,可以将电子表格中的所有数据投入到studentCCAList中。 但是,有些学生有多个科目。
以下是日志的示例
姓名:约瑟夫
主题:英语
姓名:彼得
数学
姓名:约瑟夫
主题:科学
在这种情况下,我如何确保Joseph没有插入2个阵列? 正确的应该是
姓名:约瑟夫
主题:英语,科学
var studentDataList = [];
var studentCount = 0;
for (var i = 0; i < sheetData.length; ++i) {
var row = sheetData[i];
var studentName = row[0];
var studentSubject = row[1];
studentDataList[studentCount] = {};
studentDataList[studentCount].subject = studentSubject;
studentDataList[studentCount].name = studentName;
studentCount++;
}
答案 0 :(得分:2)
此代码将以更有效的方式完成工作
var studentDataList = [];
var sheetData = [['Foo','math'],['Foo','science'],['Foo1','math']];
var pushData = function(obj, arr){
for(var i =0; i<arr.length; i++ ){
if(arr[i].name === obj.name){
arr[i].subject+= ', '+obj.subject;
return;
}
}
arr.push(obj);
}
for (var i = 0; i < sheetData.length; i++) {
var row = sheetData[i];
pushData({
name: row[0],
subject: row[1]
},studentDataList);
}
答案 1 :(得分:1)
我们可以借助一个阵列来做到这一点。下面的代码可以帮助你...
var studentDataList = [];
var studentTrack = []; //array which prevents the duplicate values
for (var i = 0; i < sheetData.length; ++i) {
var row = sheetData[i];
var studentName = row[0];
var studentSubject = row[1];
var index = studentTrack.indexOf(studentName);
if(index == -1){
studentDataList.push({
name: studentName,
subject: studentSubject
});
studentTrack.push(studentName);
}else{
studentDataList[index].subject += ", "+studentSubject;
}
}