在Javascript数组上运行递归函数
Run recursive function on Javascript array
我有一个简单的Javascript对象:
options[0] = {
title: 'Title 1',
items: ['a', 'b', 'c']
};
options[1] = {
title: 'Title 2',
items: ['1', '2', '3']
};
options[2] = {
title: 'Title 3',
items: ['x', 'y', 'z']
};
我需要它在自身上递归地运行数组。上面示例的输出应该是27个条目/行:
a / 1 / x
a / 1 / y
a / 1 / z
a / 2 / x
a / 2 / y
a / 2 / z
a / 3 / x
a / 3 / y
a / 3 / z
b / 1 / x
b / 1 / y
b / 1 / z
b / 2 / x
b / 2 / y
b / 2 / z
b / 3 / x
b / 3 / y
b / 3 / z
c / 1 / x
c / 1 / y
c / 1 / z
c / 2 / x
c / 2 / y
c / 2 / z
c / 3 / x
c / 3 / y
c / 3 / z
以下是我到目前为止所做的尝试:
fn_options(options);
function fn_options(options) {
$.each(options, function( index, option ) {
$.each(option.items, function( i, item ) {
console.log(item);
});
});
}
基本操作:http://jsfiddle.net/6D89F/1/
这也可以:
printOption(options,0,"");
function printOption(options, i, string)
{
if(i>=options.length)
{
console.log(string);
return;
}
for(var j=0 ; j<options[i].items.length ; j++)
{
// console.log(options[i].items[j]);
separator = string.length>0?" / ":"";
printOption(options, i+1, string + separator + options[i].items[j]);
}
}
递归解:
function printOptions(options,level,line) {
if (level >= options.length) {
console.log(line);
} else {
if (line !== '') {
line += ", ";
}
$.each(options[level].items, function() {
printOptions(options, level+1, line + this);
});
}
}
printOptions(options,0,'');
Demo 试试,
$.each(options[0].items, function (i, option) {
$.each(options[1].items, function (j, option1) {
$.each(options[2].items, function (k, option2) {
console.log(option + "," + option1+"," + option2);
});
});
});
演示相关文章:
- 递归函数中断
- 将jQuery对象传递到setTimeout递归函数中
- 对象与递归函数的比较
- 循环内部的递归函数未按预期工作
- 递归函数返回不正确
- 递归函数编程困境
- 给定一个带有数字的数组,我如何编写一个递归函数,当 2 个元素加起来为一个目标时,它会在数组中查找索引
- 返回不会退出 javascript 中的递归函数
- jquery递归函数转换为非递归函数
- AngularJS,promise带有递归函数
- 如何停止此递归函数
- 如何将下面的递归函数转换为纯函数
- jQuery setTimeout ajax递归函数在即时消息程序中短时间后抛出错误
- Javascript递归函数引用了这一点
- 如何将这个递归函数转换为迭代函数
- jQuery递归函数调用和Javascript之间有区别吗;s setInterval
- 从javascript中的递归函数获取undefined
- 将递归函数转换为异步 CPS 实现 (javascript)
- 在Javascript数组上运行递归函数
- Javascript模式分解长时间运行的递归函数