2012-09-12 165 views
4

我有一個進入這個例子陣列被插入到數據表中的YUIJSON陣列推

var book = { 
     "id" : "po-0167", 
     "date" : new Date(1980, 2, 24), 
     "quantity" : 1, 
     "amount" : 4, 
     "title" : "A Book About Nothing" 
    }; 

我將能夠通過這樣做是爲了得到相同的陣列?

var book = []; 

    var booktemp = { 
     "id" : "po-0167" 
    }; 
    book.push(booktemp); 

    booktemp = { 
     "date" : new Date(1980, 2, 24) 
    }; 
    book.push(booktemp); 

    booktemp = { 
     "quantity" : 1 
    }; 
    book.push(booktemp); 

    booktemp = { 
     "amount" : 4 
    }; 
    book.push(booktemp); 

    booktemp = { 
     "title" : "A Book About Nothing" 
    }; 
    book.push(booktemp); 

我在這裏嘗試的是編寫一個通用方法,它將遍歷結果列表並能夠在未來形成一個條目。

var resultsArray = []; 
for(int i = 0; i < array.features.length; i ++) 
{ 
    var resultsFeatureArray = []; 
    for(att in array.features[i].attributes) 
    { 
     var temp = { 
      att : array.features[i].attributes[att] 
     } 
     resultsFeatureArray.push(temp); 
    } 
    resultsArray.push(resultsFeatureArray); 
} 

那麼我怎樣才能使數組相同的第一部分的書代碼?

加入我的整個樣本代碼,註釋的書陣列似乎工作,但沒有註釋的部分似乎不能夠顯示行

<script type="text/javascript"> 

YAHOO.util.Event.addListener(window, "load", function() { 

    YAHOO.example.Data = { 
     bookorders: [ 
     ] 
    } 


    var bookorders = [];  

    /* 
    var book = { 
     "id" : "po-0167", 
     "date" : new Date(1980, 2, 24), 
     "quantity" : 1, 
     "amount" : 4, 
     "title" : "A Book About Nothing" 
    }; 
    */ 
    var book = []; 

    var booktemp = { 
     "id" : "po-0167" 
    }; 
    book.push(booktemp); 

    booktemp = { 
     "date" : new Date(1980, 2, 24) 
    }; 
    book.push(booktemp); 

    booktemp = { 
     "quantity" : 1 
    }; 
    book.push(booktemp); 

    booktemp = { 
     "amount" : 4 
    }; 
    book.push(booktemp); 

    booktemp = { 
     "title" : "A Book About Nothing" 
    }; 
    book.push(booktemp); 



    bookorders.push(book); 

    YAHOO.example.Basic = function() { 


     var myColumnDefs = [ 
      {key:"id", sortable:true, resizeable:true}, 
      {key:"date", formatter:YAHOO.widget.DataTable.formatDate, sortable:true, sortOptions:{defaultDir:YAHOO.widget.DataTable.CLASS_DESC},resizeable:true}, 
      {key:"quantity", formatter:YAHOO.widget.DataTable.formatNumber, sortable:true, resizeable:true}, 
      {key:"amount", formatter:YAHOO.widget.DataTable.formatCurrency, sortable:true, resizeable:true}, 
      {key:"title", sortable:true, resizeable:true} 
     ]; 


     var myDataSource = new YAHOO.util.DataSource(bookorders); 
     myDataSource.responseType = YAHOO.util.DataSource.TYPE_JSARRAY; 

     myDataSource.responseSchema = { 
      fields: ["id","date","quantity","amount","title"] 
     }; 
     var myDataTable = new YAHOO.widget.DataTable("basic", 
       myColumnDefs, myDataSource); 

     return { 
      oDS: myDataSource, 
      oDT: myDataTable 
     }; 
    }(); 


}); 

回答

4

我嘗試和發現解決它工作得很好,因爲ATT和值將對象後,我把它

var temp = new Object(); 
    temp["id"] = "po-0167"; 
    temp["date"] = new Date(1980, 2, 24); 
    temp["quantity"] = 1; 
    temp["amount"] = 4; 
    temp["title"] = "A Book About Nothing"; 

bookorders.push(temp); 

這將使其顯示在數據表中,通用部分將通過使用temp [att] = attributes [att]來迭代;

3
var book = { 
     "id" : "po-0167", 
     "date" : new Date(1980, 2, 24), 
     "quantity" : 1, 
     "amount" : 4, 
     "title" : "A Book About Nothing" 
    }; 

它不是陣列。
陣列是

var books =[{ 
    "id" : "po-0167", 
    "date" : new Date(1980, 2, 24), 
    "quantity" : 1, 
    "amount" : 4, 
    "title" : "A Book About Nothing" 
}] 

,並在你的榜樣操作後,你會得到下一個數組

var book2 =[{ 
    "id" : "po-0167" 
},{ 
    "date" : new Date(1980, 2, 24) 
    },{ 
    "quantity" : 1 
},{ 
    "amount" : 4 
},{ 
    "title" : "A Book About Nothing" 
}] 

它是不一樣的。
你必須做下一個:

var book = new Array(); 

var booktemp = { 
    "id" : "po-0167", 
    "date" : new Date(1980, 2, 24), 
    "quantity" : 1, 
    "amount" : 4, 
    "title" : "A Book About Nothing" 
}; 

book.push(booktemp); 

PS。
var arr = []var arr = new Array()是相同的 並非所有瀏覽器與var arr = []

+0

@llya okies學習新東西,但我想知道是否有一種方法可以讓我將每個單獨的字段「id」,「date」,「quantity」,「amount」,「title」使其看起來像第一個var book = { 「id」:「po-0167」, 「date」:new Date(1980,2,24), 「quantity」:1, 「amount」:4 , 「title」:「一本關於什麼的書」 }; 。我試圖插入YUI數據表中的 – jonleech

+0

。我在我的問題裏面添加了代碼 – jonleech

+0

你var book不是數組! – Ilya