清理包含数组的数组中的dupe

时间:2013-10-04 17:30:10

标签: javascript jquery

我有一个数组如下

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有独特的学生和教授

3 个答案:

答案 0 :(得分:0)

假设studentIdprofId是唯一的(而不是一对名称和ID),您可以使用类似

的内容
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);
    }
}

答案 1 :(得分: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]);
    }   
});

答案 2 :(得分:0)

我会使用一个对象,因为对象有唯一的键。

var myObj={};
myObj.students = {};
myObj.professors = {};

for(var key =0; key<data.length; key++){

    myObj.students[data[key].studentId] = data[key].studentName;
    myObj.professors[data[key].profId] = data[key].profName;

}

console.log(myObj)