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