在javascript中构建多维数组

时间:2012-10-29 14:33:44

标签: javascript jquery arrays loops

我正在检索一个Json数据集,需要构建一个名为'arrProducts'的javascript数组。我的下面的代码是错误的,但在正确的行。有人可以帮忙??

var allProducts = $.get("http://localhost:8888/web/app_dev.php/api/v1/search/search.json",
function(data) {
    var productsArray = data.products;
    var arrProducts = '';
    $.each(productsArray, function(index, product) {
        arrProducts['name'] = product.name;                        
        arrProducts['title'] = product.title;
        arrProducts['price'] = product.price;           
    });     
});

4 个答案:

答案 0 :(得分:1)

这应该做你想要的:

var allProducts = $.get("http://localhost:8888/web/app_dev.php/api/v1/search/search.json",
function(data) {
    var productsArray = data.products;
    var arrProducts = productsArray;
});

productsArray已经采用您要构建的格式,因此您应该直接使用data.products

var allProducts = $.get("http://localhost:8888/web/app_dev.php/api/v1/search/search.json",
function(data) {
    console.log(data.products);
});

答案 1 :(得分:1)

    var allProducts = $.get("http://localhost:8888/web/app_dev.php/api/v1/search/search.json",
function(data) {
    var productsArray = data.products;
    var arrProducts = []; //This needs to be an array not a string.
    $.each(productsArray, function(index, product) {
        var prod = {};//make a new product for each iteration
        prod['name'] = product.name;                        
        prod['title'] = product.title;
        prod['price'] = product.price;    
        arrProducts.push(prod); //add the product to thearray of products       
    });     
});

正如Kevin B所指出的,看起来data.products已经是你要采用的格式的对象数组,所以这种“转换”似乎毫无意义。

答案 2 :(得分:0)

您只需使用以下代码创建一个数组:

var arrProducts = [];

其余代码将满足您的目的

但是,正如评论所述,这将创建一个三元素关联数组,它将在每个迭代中被覆盖。你需要重新思考你的结构:multidimensioanl数组?对象数组?

答案 3 :(得分:0)

这个怎么样?

var arr;
var allProducts = $.getJSON("http://localhost:8888/web/app_dev.php/api/v1/search/search.json",
function(data) {
    arr = jQuery.makeArray(data);
});

注意:

您需要使用getJSON方法,以便最终得到一个已经解析的对象,然后您可以在回调中使用它。至于makeArray方法http://api.jquery.com/jQuery.makeArray/