0

次のような配列があります

var myArray={};
myArray.students = [];
myArray.Professors = [];
var tmpArray1 = [];
var tmpArray2 = [];

for(var key =0; key<data.length; key++){
    tmpArray1.push(name: data.studentName,id : data.studentId);
    tmpArray2.push({name : data.profName,id :data.profId});   
    myArray.students.push({name: data.studentName,id : data.studentId});
    myArray.Professors.push({name : data.profName,id :data.profId);
}

この配列には、学生と教授の両方の複製が含まれています。一時的な配列でチェックし、一意の学生IDと教授を持っている学生と教授のみをプッシュすることで、それをきれいにしようとしていますが、正しく機能していないようです。myArray に独自の学生と教授を持たせたい

4

3 に答える 3

0

配列で個別に実行したい場合は、次のようにします。

$(document).ready(function(){
    var data = [
        { "profId" : 1, "studentId" : 1, "profName" : "John", "studentName" : "Jack"},
        { "profId" : 2, "studentId" : 1, "profName" : "Steve", "studentName" : "Mark"},
        { "profId" : 3, "studentId" : 3, "profName" : "Gabe", "studentName" : "Martin"},
        { "profId" : 2, "studentId" : 1, "profName" : "Steve", "studentName" : "Mark"}  
    ];
    var Professors = [];
    var Students = [];

    for(var i = 0; i < data.length; i++){
        if(jQuery.inArray(data[i].profName, Professors) == -1){
            Professors.push(data[i].profName);
        }
        if(jQuery.inArray(data[i].studentName, Students) == -1){
            Students.push(data[i].studentName);
        }       
    }

    console.log("Professors:");
    for(var x = 0; x < Professors.length; x++){
        console.log("   " + Professors[x]);
    }
    console.log("Students:");   
    for(var z = 0; z < Students.length; z++){
        console.log("   " + Students[z]);
    }   
});
于 2013-10-04T17:57:19.747 に答える
0

と が(名前とIDのペアではなく)一意であると仮定するとstudentIdprofId次のようなものを使用できます

var myArray = {
        students: [],
        professors: []
    },
    tmpArray1 = [],
    tmpArray2 = [];

for(var key=0; key<data.length; key++){
    if(tmpArray1.indexOf(data.studentId) === -1) {
        tmpArray1.push(data.studentId);
        myArray.students.push({name: data.studentName, id: data.studentId});
    }
    if(tmpArray2.indexOf(data.profId) === -1) {
        tmpArray1.push(data.profId);
        myArray.professors.push({name: data.profName, id: data.profId);
    }
}
于 2013-10-04T17:41:26.897 に答える