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

javascript:避免嵌套在嵌套循环中

javascript:避免嵌套在嵌套循环中,javascript,Javascript,如果不在嵌套循环中进行一些丑陋的嵌套,我很难理解这段代码 我有以下几点: var selected_ingredients = [ {name:'ing4},{name:'ing13},{name:'ing14},{name:'ing21},{name:'ing23} ]; var pizza = [ {name:'pizza1',ing[ {name:'ing12},{name:'ing2} ]}, {name:'pizza2',ing[ {name:'ing4},{name:'ing13}

如果不在嵌套循环中进行一些丑陋的嵌套,我很难理解这段代码

我有以下几点:

var selected_ingredients = [ {name:'ing4},{name:'ing13},{name:'ing14},{name:'ing21},{name:'ing23} ];

var pizza = [ {name:'pizza1',ing[ {name:'ing12},{name:'ing2} ]}, {name:'pizza2',ing[ {name:'ing4},{name:'ing13} ]}, {name:'pizza3',ing[ {name:'ing14},{name:'ing21},{name:'ing2} ]}, {name:'pizza4',ing[ {name:'ing14},{name:'ing3} ]}, {name:'pizza5',ing[ {name:'ing21},{name:'ing14},{name:'ing5} ]} ];
我想要以下内容:

var selected_ingredients = [ {name:'ing4},{name:'ing13},{name:'ing14},{name:'ing21},{name:'ing23} ];

var pizza = [ {name:'pizza1',ing[ {name:'ing12},{name:'ing2} ]}, {name:'pizza2',ing[ {name:'ing4},{name:'ing13} ]}, {name:'pizza3',ing[ {name:'ing14},{name:'ing21},{name:'ing2} ]}, {name:'pizza4',ing[ {name:'ing14},{name:'ing3} ]}, {name:'pizza5',ing[ {name:'ing21},{name:'ing14},{name:'ing5} ]} ];
我只想把代码打印出来的比萨饼有相同的成分,可以在选定的配料数组中找到

当数组可以包含1000个比萨饼项目时,如何使用而不使循环中所有循环的代码变慢。

您可以使用
.filter()
方法根据任何条件筛选数组。请看下面的示例代码

var filtered_result = pizza.filter(function(pizza_detail){
  return pizza_detail.ing.sort(arraySort) == selected_ingredients.sort(arraySort);
})

function arraySort(a,b){
  return a.attributes.name < b.attributes.name ? 1 : -1;
}
var filtered\u result=pizza.filter(函数(pizza\u细节){
返回pizza_detail.ing.sort(arraySort)=所选配料.sort(arraySort);
})
函数数组排序(a,b){
返回a.attributes.name
由于您的Json对象没有排序,您需要先对其排序,然后再将其与选定的元素数组进行比较。

您可以使用映射(适用于现代浏览器)

var-map=newmap();
对于(变量i=0;i

解决方案要求对成分进行排序。

问题中的代码充满语法错误。因此,首先要纠正这些错误,这样我们才能了解真正的结构是什么。@T.J.Crowder复制粘贴问题,我猜。但他确实需要修复它们!然而,如果WebSQL成为现实,这对于SQL来说是一项非常简单的任务:'(看起来您只是想循环比萨饼,然后将配料列表与完整的配料数组进行比较。其他问题,如,可能足以让您继续。这只是示例代码。问题是,我必须循环遍历数组中的数组(比萨饼中的配料)而我必须循环选择的配料。以确保我打印出正确的比萨饼。它将成为一个嵌套的循环地狱。如何使此代码干净?