javascript - Python 到 JavaScript

标签 javascript python

>>> def clockwise(r):
...     return list(r[0]) + clockwise(list(reversed(zip(*r[1:])))) if r else []
... 
>>> a = [ 
...   [ 1,  2,  3], 
...   [ 5,  6,  7], 
...   [ 9, 10, 11]]
>>> clockwise(a)
[1, 2, 3, 7, 11, 10, 9, 5, 6]

我试图将函数顺时针更改为 Javascript,但似乎无法让它工作。

我创建了一些具有类似功能的方法:

function zip(masterArray){//zips 2 arrays
var innerLoop = masterArray.length; //inner loop
var outerLoop = 0;
//get length of shortest
for (var i = 0; i<masterArray.length;i++){
    var a = masterArray[i].length;
    if (outerLoop==0){outerLoop = a;}else if(a < outerLoop){outerLoop = a;}
}

var newOuterArray = new Array(outerLoop);
    for (var x = 0; x<outerLoop;x++){
        var newInnerArray = new Array(innerLoop);
            for (var y = 0; y<innerLoop;y++){
                newInnerArray[y] = masterArray[y][x];
                }
            newOuterArray[x] = newInnerArray;
}
 return newOuterArray;
}

function reversed(arr){
    var newArray = new Array(arr.length);
    var n = 0;
    for(var i=arr.length-1; i>=0; i--){
        newArray[n++] = arr[i];
    }
    return newArray;
}

function clockwise(r){

    if(r.length>0){
            var a = reversed(zip(r.slice(1)));
            a.splice(0,0,r[0]);
            return clockwise(a);
     }else{
        return [];
    }
}

这是我的进步。我被困在最后一部分:Firebug 中的顺时针错误是递归太多。

最佳答案

我认为问题出在splice的使用上。尝试这样的事情......

function clockwise(r){
    if(r.length>0){
        var remaining = r.slice(1)
        var a = reversed(zip(remaining));
        return r[0].concat(clockwise(a));
     } else {
        return [];
    }
}

关于javascript - Python 到 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6524691/

相关文章:

python - anaconda - Windows 中的路径环境变量

python - 如何在python中映射具有多个参数的函数

python - 帮助解决 pyHook 错误

python - 批量创建 JSON 配置文件

javascript - 鼠标悬停 UL 子节点不正确

javascript - 如何检测文本框中某些文本的位置?

javascript - 在javascript中覆盖对象值

python - 有没有办法将 python 字典文字评估为有序字典?

javascript - 日期的正则表达式模式匹配

javascript - 无法从 JavaScript 触发提交