Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.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 - Fatal编程技术网

Javascript 从未知数量的多个数组中创建一个列表

Javascript 从未知数量的多个数组中创建一个列表,javascript,jquery,arrays,Javascript,Jquery,Arrays,我的目标是列出产品的所有成分。不幸的是,有多个成分数组,每个数组中有多个成分。阵列的数量因产品而异,因此我需要某种方法来捕获所有成分。到目前为止,我已经: 查找所有成分数组并单独列出它们 $(function() { var params = { // Request parameters // "gtin": "{string}", // "tpnb": "{string}", // "tpnc": "{string}",

我的目标是列出产品的所有成分。不幸的是,有多个成分数组,每个数组中有多个成分。阵列的数量因产品而异,因此我需要某种方法来捕获所有成分。到目前为止,我已经:

查找所有成分数组并单独列出它们

$(function() {
    var params = {
        // Request parameters
        // "gtin": "{string}",
       // "tpnb": "{string}",
       // "tpnc": "{string}",
       // "catid": "{string}",

        // "gtin": "05052004435789",
            "tpnc": "285363525",
    };

    $.ajax({
        url: "https://dev.tescolabs.com/product/?" + $.param(params),
        beforeSend: function(xhrObj){
            // Request headers
            xhrObj.setRequestHeader("Ocp-Apim-Subscription-Key","key");
        },
        type: "GET",
        // Request body
        data: "{body}",

    })
        .done(function(data) {
            // alert("success");
            // alert(data);
            console.log(data);

var ingredientArrays = data.products[0].ingredients;
var l = ingredientArrays.length;
for (i = 0; i < l; i++){
   var allIngredients = ingredientArrays[i];
    console.log(allIngredients);
}

        })
        .fail(function() {
            alert("error");
        });
});
更新

为了澄清,我可以在控制台日志中返回如下结果:

tesco.js:70 
["<strong>Wheat</strong> Flour"]
0
:
"<strong>Wheat</strong> Flour"
length
:
1
__proto__
:
Array(0)
tesco.js:70 
["Tomato Purée"]
0
:
"Tomato Purée"
length
:
1
__proto__
:
Array(0)
tesco.js:70 
(35) ["Mozzarella Cheese (<strong>Milk</strong>) (16%)", " Pepperoni (10%)", " Water", " Mini Pepperoni (3", "5%)", " Yeast", " Dextrose", " Rapeseed Oil", " Salt", " Sugar", " Dried Garlic", " Dried Herbs", " Spice", " Pepperoni contains", " Pork", " Pork Fat", " Salt", " Dextrose", " Spices", " Spice Extracts", " Antioxidants (Extracts of Rosemary", " Sodium Ascorbate)", " Preservative (Sodium Nitrite)", " Mini Pepperoni contains", " Pork", " Pork Fat", " Salt", " Dextrose", " Spices", " Spice Extracts", " Sugar", " Antioxidants (Sodium Erythorbate", " Extracts of Rosemary)", " Preservative (Sodium Nitrite)", ""]
0
:
"Mozzarella Cheese (<strong>Milk</strong>) (16%)"
1
:
" Pepperoni (10%)"
2
:
" Water"
3
:
" Mini Pepperoni (3"
4
:
"5%)"
5
:
" Yeast"
6
:
" Dextrose"
7
:
" Rapeseed Oil"
8
:
" Salt"
/// and so on\
tesco.js:70
[“小麦面粉”]
0
:
“小麦面粉”
长度
:
1.
__原型__
:
数组(0)
tesco.js:70
[“番茄酱”]
0
:
“番茄酱”
长度
:
1.
__原型__
:
数组(0)
tesco.js:70
(35)[“莫扎里拉奶酪(牛奶(牛奶))(16%),“意大利香肠(10%),“水”,“迷你意大利香肠(3”,“5%),“酵母”,“葡萄糖”,“菜籽油”,“盐”,“糖”,“大蒜干”,“干草药”,“香料”,“意大利香肠”,“猪肉”,“猪肉脂肪”,“盐”,“葡萄糖”,“香料”,“香料提取物”,“抗氧化剂”(迷迭香提取物)、“抗坏血酸钠”、“防腐剂(亚硝酸钠)”、“迷你辣味香肠”、“猪肉”、“猪肉脂肪”、“盐”、“葡萄糖”、“香料”、“香料提取物”、“糖”、“抗氧化剂(异抗坏血酸钠”、“迷迭香提取物)”、“防腐剂(亚硝酸钠)”、“]
0
:
“莫扎里拉奶酪(牛奶)(16%)”
1.
:
“意大利香肠(10%)”
2.
:
“水”
3.
:
“迷你意大利香肠(3”
4.
:
"5%)"
5.
:
“酵母”
6.
:
“葡萄糖”
7.
:
“菜籽油”
8.
:
“盐”
///等等\
使用此代码:

    var ingredientArrays = data.products[0].ingredients;
    var l = ingredientArrays.length;
    for (i = 0; i < l; i++){
       var allIngredients = ingredientArrays[i];
        var ingredient = allIngredients.split(/[:;,.]+/);
        console.log(ingredient);
    }
var-ingredientArrays=data.products[0]。配料;
var l=InGedentials.length;
对于(i=0;i

但正如您所看到的,它分别对成分进行计数。我希望它们是一个完整的列表。计数应该从0开始并向上。而不是显示基于每个成分数组的结果,从而得到上面的结果1、1、35。我将得到一个结果37。

因此,您的实际问题是您想要迭代从服务器接收的
响应
响应
可以有多个
产品
,在每个
产品
中都有
成分
数组,该数组的大小可以不同,您希望能够迭代其中的所有索引

您应该使用
for in
for
循环。要查看差异,请参阅

我将使用提供的响应数据并对其进行迭代,它将迭代所有
产品
以及其中的所有
成分

请参见下面的演示

var响应={
“产品”:[{
“gtin”:“05054402006097”,
“tpnb”:“073706172”,
“tpnc”:“285363525”,
“描述”:“特易购石烤薄双层意大利香肠比萨330G”,
“品牌”:“乐购”,
“质量内容”:{
“数量”:330.0,
“总数量”:330.0,
“数量单位”:“g”,
“网络内容”:“330g e”
},
“产品特性”:{
“isFood”:没错,
“isDrink”:错误,
“健康评分”:48分,
“isHazardous”:错,
“存储类型”:“已冻结”
},
“成分”:[
“小麦面粉”,
“番茄酱”,
马苏里拉干酪(牛奶()(16%)、意大利香肠(10%)、水、迷你意大利香肠(3.5%)、酵母、葡萄糖、菜籽油、盐、糖、干大蒜、干香草、香料。意大利香肠含有:猪肉、猪肉脂肪、盐、葡萄糖、香料、香料提取物、抗氧化剂(迷迭香提取物、抗坏血酸钠)、防腐剂(亚硝酸钠)迷你意大利香肠含有:猪肉、猪肉脂肪、盐、葡萄糖、香料、香料提取物、糖、抗氧化剂(异抗坏血酸钠、迷迭香提取物)、防腐剂(亚硝酸钠)。”
],
}]
}
//控制台日志(测试产品);
让产品=响应。产品;
用于(产品中的var数据){
让产品=产品[数据];
让成分=产品成分;
console.log(“产品:+产品.品牌”);
console.log(“=====================================”);
控制台日志(“成分”);
对于(变量i=0;i

请分享一个,即:对象的内容
数据
。我已经更新了我的问题,并添加了一个屏幕截图,涵盖了这一点。不,它没有涵盖这一点,您需要单击提供给Atest的链接,阅读它所说的内容,如果可能,将图片中显示的样本数组作为文本发布在您的帖子中,该帖子将提供请您对解决方案做出更快速的响应。我已再次更新,并认为我已经包含了您可能需要的所有内容。抱歉,我认为可能没有必要查看比我最初提供的更多内容。谢谢@Muhammad Omer Aslam。但是,我现有的代码几乎可以做同样的事情。我已在我的问题中添加了进一步的代码,以证明e我目前在,并试图解释我希望达到的更好的结果。我在最初的问题中包括了regex的内容,但感谢我能够解释我得到的结果和我想要的更好一些。你用
Array.prototype.concat()编辑回复
正是我想要的结果。谢谢你一直支持我:):)没关系,兄弟,不客气@Dan我确实注意到了
regex
,但不知道您希望对分割的数组重新编制索引
tesco.js:70 
["<strong>Wheat</strong> Flour"]
0
:
"<strong>Wheat</strong> Flour"
length
:
1
__proto__
:
Array(0)
tesco.js:70 
["Tomato Purée"]
0
:
"Tomato Purée"
length
:
1
__proto__
:
Array(0)
tesco.js:70 
(35) ["Mozzarella Cheese (<strong>Milk</strong>) (16%)", " Pepperoni (10%)", " Water", " Mini Pepperoni (3", "5%)", " Yeast", " Dextrose", " Rapeseed Oil", " Salt", " Sugar", " Dried Garlic", " Dried Herbs", " Spice", " Pepperoni contains", " Pork", " Pork Fat", " Salt", " Dextrose", " Spices", " Spice Extracts", " Antioxidants (Extracts of Rosemary", " Sodium Ascorbate)", " Preservative (Sodium Nitrite)", " Mini Pepperoni contains", " Pork", " Pork Fat", " Salt", " Dextrose", " Spices", " Spice Extracts", " Sugar", " Antioxidants (Sodium Erythorbate", " Extracts of Rosemary)", " Preservative (Sodium Nitrite)", ""]
0
:
"Mozzarella Cheese (<strong>Milk</strong>) (16%)"
1
:
" Pepperoni (10%)"
2
:
" Water"
3
:
" Mini Pepperoni (3"
4
:
"5%)"
5
:
" Yeast"
6
:
" Dextrose"
7
:
" Rapeseed Oil"
8
:
" Salt"
/// and so on\
    var ingredientArrays = data.products[0].ingredients;
    var l = ingredientArrays.length;
    for (i = 0; i < l; i++){
       var allIngredients = ingredientArrays[i];
        var ingredient = allIngredients.split(/[:;,.]+/);
        console.log(ingredient);
    }