使用jQuery创建JSON数组和JSON项目?

use*_*114 3 jquery

我做了一个简单的javascript类,如下所示:

function Horse() {
    this.color = 'brown';
    this.speed = 'somewhat slow';
}
Run Code Online (Sandbox Code Playgroud)

我在一些元素上附加了一些实例,例如:

$("#horse1").data('d', new Horse());
$("#horse2").data('d', new Horse());
$("#horse3").data('d', new Horse());
Run Code Online (Sandbox Code Playgroud)

现在,我想用每个马对象的JSON表示形式创建一个JSON数组。所以我正在这样做:

// How do I create an empty JSON array here?:
var myJsonArray = ?;

var children = $("#horses").children();
for (var i = 0, m = children.size(); i < m; i++) {
    var panel = children[i];
    var horse = $(panel).data('h');

    // And how do I create a JSON rep of my horse here?
    var myJsonHorse = new JsonHorse(?);

    // Finally, how do I add it to the json array?
    myJsonArray.push(myJsonHorse);
}
Run Code Online (Sandbox Code Playgroud)

是的,我的最终目标是在遍历所有子项之后拥有所有马匹的单个json数组-不确定是否应使用纯JavaScript或jquery完成?

谢谢

----------------编辑-------------------

抱歉,我的最终目标是将数组转换为字符串,因此我将一个大型json数组转换为字符串,可以提交给将由服务器处理的ajax调用。

CMS*_*CMS 5

要声明一个数组,您只需要Array Literal表示法即可:

var myArray = [];
Run Code Online (Sandbox Code Playgroud)

push方法将正常工作。

另一种可能性是使用该$.map方法:

var myArray = $("#horses").children().map(function (index, el) {
  return $(el).data('d');
}).get();
//  Will return an array containing:
//  [{"color":"brown","speed":"somewhat slow"},
//   {"color":"brown","speed":"somewhat slow"},
//   {"color":"brown","speed":"somewhat slow"}]
Run Code Online (Sandbox Code Playgroud)

在此处查看示例。

然后将该数组转换为JSON字符串,您可以使用JSON.stringify方法(几乎所有浏览器都可以使用该方法,对于IE <8,您可以使用json2.js)。