【问题标题】:JSON array pushingJSON数组推送
【发布时间】:2012-09-12 07:22:45
【问题描述】:

我有这个示例数组,用于将条目插入到 YUI 数据表中

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
        };
    }();


});

【问题讨论】:

    标签: arrays json


    【解决方案1】:

    我尝试并找到了解决方案,因为 att 和 values 在我推送后将成为对象

    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]; 进行迭代

    【讨论】:

      【解决方案2】:
      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 = []

      【讨论】:

      • @llya 可以学习一些新东西,但我想知道有没有办法让我推送每个单独的字段“id”、“date”、“quantity”、“amount”、“title " 进入 book 数组,使其看起来像第一个 var book = { "id" : "po-0167", "date" : new Date(1980, 2, 24), "quantity" : 1, "amount" : 4, "title" : "A Book About Nothing" }; .
      • 我正在尝试插入 YUI 数据表。我在我的问题中添加了该代码
      • 在我的 var 书籍上制作 -> 书籍 [0],你会得到你的书
      • 由于您的不断提醒,我知道我的不是数组,我的意思是我试图更改您的代码,但它仍然无法正常工作。所以我问你(很好)应该如何改变它。你可以编辑你的答案谢谢
      • 我需要一次输入“id”字段,遍历功能及其值,所以我的意思是我没有创建像你这样的 booktemp 的奢侈已知 5 个字段。我的可以是可变的。
      猜你喜欢
      • 2017-04-12
      • 1970-01-01
      • 2019-07-05
      • 1970-01-01
      • 2015-09-13
      • 1970-01-01
      • 1970-01-01
      • 2020-04-22
      • 2016-07-13
      相关资源
      最近更新 更多