我有一个包含N个对象的数组
var test = [obj1, objc2, ..., objN]
对象采用这种格式
{"Key", "number", "Name" : "string", "OtherFields" : "Data"}
我想像这样迭代
for (var i = 0; i < test.length; i++) {
for (var j = 1; j < test.length; j++) {
for (var k = 2; k < test.length; k++) {
console.log(test[i].Name + test[j].Name + test[k].Name)
}
}
}
如何在数组中的n个对象中实现此结果?
示例:
我有数组[1, 2, 3, 4] , [2,4,5], [1,2]
我想得到这个结果:
1 2 1
1 2 2
1 4 1
1 4 2
1 5 1
1 5 2
.....
.....
4 5 2
这些数组并不总是3,但可以是任何数字&gt; = 2
答案 0 :(得分:0)
如果我理解正确,你想要排列。
这是一种递归方法:
function perm(test, max_depth, depth, s){
if(depth === undefined)
depth = max_depth;
if(s === undefined)
s = '';
if(depth == 0)
console.log(s);
for(var i=depth; i<test.length;i++){
perm(test, max_depth, depth-1, s + test[i].Name);
}
}
答案 1 :(得分:0)
var N = 10;
var n = 3;
var test = [];
for (var i = 0; i < N; i++) {
test.push({"Name" : "obj" + i});
}
function log_name_combinations(a, n) {
function nestedlog(a, maxlvl, lvl, s) {
if (lvl < maxlvl) {
for (var i = lvl; i < a.length; i++) {
nestedlog(a, maxlvl, lvl+1, s + a[i].Name);
}
} else {
console.log(s);
}
}
nestedlog(a, n, 0, "");
}
log_name_combinations(test, n);
PS:你为什么要在i
索引处开始i
级迭代?