2012-09-12 106 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