JSON数组推送

8

我有一个示例数组,用于插入到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);
}

那么我该如何使数组与代码书第一个段落相同?

添加了整个样例代码,注释的 book 数组似乎工作正常,但未注释部分无法显示行。

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


});

2个回答

8

我尝试并找到了解决方案,因为在我将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];进行迭代。


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 = []


@llya 好的,有新东西要学习,但我想知道是否有办法将每个单独的字段“id”、“date”、“quantity”、“amount”、“title”推入book数组中,使其看起来像第一个变量book = { "id" : "po-0167", "date" : new Date(1980, 2, 24), "quantity" : 1, "amount" : 4, "title" : "A Book About Nothing" };。 - jonleech
我正在尝试向YUI数据表中插入数据。我已经将代码添加到我的问题中。 - jonleech
将我的变量书籍 books 更改为 books[0],你就会得到你的书。 - Ilya
我知道我的不是数组,因为你一直在提醒我,但我想说的是,我尝试了改变你的代码,但它仍然无法工作。所以我(很客气地)问你应该如何更改。你可以编辑你的答案,谢谢。 - jonleech
我需要逐个输入“id”字段,遍历特征及其值,因此我的意思是我没有像你那样创建一个已知所有5个字段的booktemp的奢侈条件。我的可能是可变的。 - jonleech
如果你想迭代你的JSON对象中的每个字段,你可以使用下面的代码:for(var key in book){ var bookKey = key; var bookValue = obj[key]; } - Ilya

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接