Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用javascript构建多维数组_Javascript_Jquery_Arrays_Loops - Fatal编程技术网

用javascript构建多维数组

用javascript构建多维数组,javascript,jquery,arrays,loops,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 = '';

我正在检索一个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;           
    });     
});

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

var arrProducts = [];
代码的其余部分将满足您的目的


但是,正如注释所述,这将创建一个三元素关联数组,该数组将在每个iterarion中被覆盖。你需要重新思考你的结构:多维数组?对象数组?

这应该满足您的要求:

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);
});
正如Kevin B所指出的,看起来data.products已经是一组您将要使用的格式的对象,因此这种“转换”似乎毫无意义。

这怎么样

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方法

您缺少一个结束语
在您的URL@freefaller我认为这是一个输入错误。你不能使用JSON对象已经有的东西吗?你是通过一些东西循环的,所以它就像数组一样。
arrProducts
data.products
有何不同?arrProducts需要是一个数组,并且需要为它提供包含名称、标题和价格的对象。productsArray已经是您想要的格式。感谢您澄清这是一个打字错误,richelliot,我将相应地修改您的问题@展望未来,我完全理解你的立场,我同意这不太可能成为主要问题。我知道这不是一个“深入的讨论”,但这只是我想提出的改变打字错误的一般概念。啊,好吧,生活还在继续:-)不,不会的,你会一遍又一遍地写同一个索引。是的,这是毫无意义的。我认为通过循环遍历数据,它可能会阻止它成为对象,但不幸的是,它仍然是对象。如何将其转换为sting数组?很简单。用法:JSON.stringify(yourray);是的,这是毫无意义的。我认为通过循环遍历数据,它可能会阻止它成为对象,但不幸的是,它仍然是对象。如何将其转换为sting数组?@richelliot对象就是您所称的字符串数组。JavaScript没有关联数组,它有对象和数组,数组可以包含对象。
var arr;
var allProducts = $.getJSON("http://localhost:8888/web/app_dev.php/api/v1/search/search.json",
function(data) {
    arr = jQuery.makeArray(data);
});