Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.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
Typescript 将两个字符串数组转换为嵌套对象_Typescript_Ecmascript 6 - Fatal编程技术网

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²)做得更好。如果问题是关于复杂性的,那么它似乎是。我不是在谈论空间复杂性,因此您的输出注释不是答案。我说的是时间复杂性,如果有一种方法可以线性填充上面的嵌套对象的话。