Typescript 将两个字符串数组转换为嵌套对象
我尝试将两个数组(在本例中,它们是整数数组)和“笛卡尔乘积”从两个方向将它们放入嵌套对象中。我不确定这是否更像是一个排列问题,但我感觉它涉及到在数组原型上使用一些方法。例如:Typescript 将两个字符串数组转换为嵌套对象,typescript,ecmascript-6,Typescript,Ecmascript 6,我尝试将两个数组(在本例中,它们是整数数组)和“笛卡尔乘积”从两个方向将它们放入嵌套对象中。我不确定这是否更像是一个排列问题,但我感觉它涉及到在数组原型上使用一些方法。例如: const a = [1, 2, 3]; const b = [4, 5, 6]; function doCartesian(a, b) { // logic here } console.log(doCartesian(a, b)) // prints out { "firstWay": {
const a = [1, 2, 3];
const b = [4, 5, 6];
function doCartesian(a, b) {
// logic here
}
console.log(doCartesian(a, b))
// prints out
{
"firstWay": {
"1": {
"4": true,
"5": true,
"6": true
},
"2": {
"4": true,
"5": true,
"6": true
},
"3": {
"4": true,
"5": true,
"6": true
}
},
"secondWay": {
"4": {
"1": true,
"2": true,
"3": true
},
"5": {
"1": true,
"2": true,
"3": true
},
"6": {
"1": true,
"2": true,
"3": true
}
}
}
这会满足你的要求。我希望我能帮助你
function certesian(a,b) {
var obj = {};
a.forEach(function(valA) {
var temp = {};
b.forEach(function(valB) {
temp[valB] = true;
});
obj[valA] = temp;
});
return obj;
}
function doCartesian(a, b) {
var obj = [];
obj['firstWay'] = certesian(a,b);
obj['secondWay'] = certesian(b,a);
return obj;
}
var a = [1, 2, 3];
var b = [4, 5, 6];
console.log(doCartesian(a,b));
看起来像是一项任务。您尝试过什么?如果每个数组的长度为n,则所需的输出本身的大小为n²。因此,除非你实际上不需要输出整个东西,否则你不会比O(n²)做得更好。如果问题是关于复杂性的,那么它似乎是。我不是在谈论空间复杂性,因此您的输出注释不是答案。我说的是时间复杂性,如果有一种方法可以线性填充上面的嵌套对象的话。