在Javascript / jQuery中基于选项网格创建递归函数
Creating a recursive function in Javascript / jQuery based on an option grid
我正在尝试从选择列表中生成选项所需的图像列表。
我可以这样做:
var imagesNeeded = [];
$('.woodStyles .optionLabel').each(function(index) {
var woodStyle = $(this).html();
$('.grainStyles').find('.optionLabel').each(function(index) {
var grainStyle = $(this).html();
imagesNeeded.push(grainStyle+woodStyle);
});
});
console.log(imagesNeeded);
正如你所看到的,上面的代码本质上是递归的,我要做的是创建一个像这样的数组:
var options = ['grainStyles', 'woodStyles'];
和上面的代码做同样的事情,但是使用递归函数,这样我就可以从无限数量的选项中生成所需的图像列表。
我试着从很多方面去理解这件事,但我还是不明白。
如果我创建一个这样的数组:var options = ['grainStyles', 'woodStyles', 'finishTypes'];
递归函数需要做与下面代码相同的事情:
var imagesNeeded = [];
$('.woodStyles .optionLabel').each(function(index) {
var woodStyle = $(this).html();
$('.grainStyles').find('.optionLabel').each(function(index) {
var grainStyle = $(this).html();
$('.finishTypes').find('.optionLabel').each(function(index) {
var finishType = $(this).html();
imagesNeeded.push(grainStyle+woodStyle+finishType);
});
});
});
console.log(imagesNeeded);
听起来好像您有许多选项列表,而您想要生成一个包含所有选项排列的列表。
这可以递归地完成,如下所示:function getImagesNeeded(options) {
if(options.length == 0) return [""];
var thisClass = options[0];
var imagesNeeded = [];
$('.' + thisClass + ' .optionLabel').each(function(index) {
var value = $(this).html();
$.each(getImagesNeeded(options.slice(1)), function(i, suffix) {
imagesNeeded.push(value + suffix);
});
});
return imagesNeeded;
}
还有其他方法可以做到。例如,没有递归:
function getImagesNeeded(options) {
var imagesNeeded = [""];
$.each(options, function(i, optionName) {
var newImagesNeeded = [];
$.each(imagesNeeded, function(i, oldImageName) {
$('.' + optionName + ' .optionLabel').each(function(i, label) {
newImagesNeeded.push(oldImageName + label.innerHTML);
});
});
imagesNeeded = newImagesNeeded;
});
return imagesNeeded;
}
相关文章:
- 将网格动态添加到选项卡面板中的特定选项卡
- 在 ExtJS 中更新选项卡开关上的网格面板
- 用Javascript填充剑道网格列菜单过滤选项
- HTML 网格/表格选项(虚拟渲染/滚动)
- Angularjs ng 网格,当某些 ng 网格选项中的列 Def 在多 ng 网格显示期间不同时,无法显示某些 ng
- ExtJS 4.2.1 - 选项卡面板中的网格 - 工具提示停止工作
- 如何在 angularjs 中使用 ui-grid 为多个表动态创建网格选项
- 节点 - 用于发送电子邮件的选项,发送网格和节点邮件之一或组合
- 如何使用垂直滑动选项在屏幕中间显示网格
- item(i)为null或不是带过滤选项的锁定网格中的对象(extjs3.4)
- "无法读取属性'选项'未定义的“;尝试更新数据网格时的EasyUI
- 如何从数据库中查看具有相应id的选项值的网格
- 如何使用kendoui网格传递来自javascript onclick的带模板选项的硬编码字符串值
- Javascript-动态网格花式删除选项
- 如何访问剑道网格's列菜单,并为列标题中的特定列添加筛选选项
- 棱角剑道网格与k-rebind不深入观察它的选项对象
- 数据表:当用户根据条件单击选项卡时,如何将数据加载到网格中
- 网格.MVC日期过滤器"选项不起作用
- 第一个选项卡面板没有显示网格中的数据(ie9)
- 在Javascript / jQuery中基于选项网格创建递归函数