2013-10-04 55 views
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的有独特的学生和教授

+1

我使用underscorejs这样的事情,看看http://underscorejs.org/#uniq是否会做你想做的。 – asawyer

+0

我看到四个按钮,没有在你的例子中检查。 – j08691

+0

我看过的所有示例都使用单维数组,因此使用$ .inArray完成检查。我怎样才能做到这一点,但检查studentId和studentName是否一样? – Mary

回答

0

假设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); 
    } 
} 
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]); 
    } 
}); 
+0

谢谢Hugo Tostes。然而,我想将教授和学生包装在一个包装中,因此使用myArray包装。 – Mary

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)