2012-12-10 22 views
-1

我有一個對象數組像這樣如何對象數組排序使用Java腳本

[ 
     {bookName:"javascript",authorName:"john"}, 
     {bookName:"java",authorName:"peter"}, 
     {bookName:"j2ee",authorName:"john"}, 
     {bookName:".net",authorName:"peter"}, 
     {bookName:"oracle",authorName:"peter"}]; 

我試過邏輯,但我沒有得到correctly.I要理清相對於對象數組中的字段映射這樣的..

{ 
peter:{ 
    [{bookName:"java",authorName:"peter"}, 

    {bookName:".net",authorName:"peter"}, 

    {bookName:"oracle",authorName:"peter"} ] 

    } , 
john :{ 
    [{bookName:"j2ee",authorName:"john"}, 

    {bookName:"javascript",authorName:"john"}] 

    } 

}. 

我怎麼能做到這一點..在此先感謝..

var obj={}; 
var objArr = given objectarray; 
for(var i=0;i<objArr.length.i++){ 
    objArr[objArr[i].authorName]=objArr[i];  
} 

var obj={}; 
var objArr = given objectarray; 
for(var i=0;i<objArr.length.i++){ 
    var arr=[]; 
    objArr[objArr[i].authorName]=arr.push(objArr[i]);  
} 
+0

多少邏輯,你試試?你能把它們包括在你的問題中嗎? –

+0

顯示您嘗試的代碼。 – Barmar

回答

2

你可以這樣做:

var b = ... your object ... 
var m = {}; 
b.map(function(v){(m[v.authorName]=m[v.authorName]||[]).push(v)}); 

Demonstration (open the console)

+1

+1 - 這是光滑的。來[反轉](http://stackoverflow.com/badges/95/reversal)! –

1

http://jsfiddle.net/azqRu/

var array = [ 
      {bookName:"javascript",authorName:"john"}, 
      {bookName:"java",authorName:"peter"}, 
      {bookName:"j2ee",authorName:"john"}, 
      {bookName:".net",authorName:"peter"}, 
      {bookName:"oracle",authorName:"peter"} 
    ]; 

    var items = {}; 
    for(var i = 0, ii = array.length; i < ii; i++) { 
     var cell = array[i]; 
     items[cell.authorName] = items[cell.authorName] || []; 
     items[cell.authorName].push(cell); 
    }  

    alert(items["peter"]); 
+0

謝謝jension ..我得到了輸出 – user2587222