2013-10-04 66 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)