因此,我有2个单独的2D数组,它们的长度不一定相同,并且我想为每个对象创建一个对象。我做的:

var obj1 = {},
    obj2 = {};

    for (var i=0; i<arr1.length; i++) {

      obj1[arr1[i][1]] = arr1[i][0];

    }

    for (var j=0; j<arr2.length; j++) {

      obj2[arr2[j][1]] = arr2[j][0];

    }


我的问题是,是否有一种方法可以只使用一个循环。谢谢!

最佳答案

您真正想要的是消除重复的函数抽象。没有什么可以提高效率的(如果您指的是时间复杂度,而不是开发人员效率):

function arrToObj(arr) {
    var obj = {};
    for (var i=0; i<arr.length; i++) {
        obj[arr[i][1]] = arr[i][0];
    }
    return obj;
}
var obj1 = arrToObj(arr1),
    obj2 = arrToObj(arr2);


该循环仍执行两次,但只编写一次。

关于javascript - for循环效率,将两个for循环合为一个,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42926985/

10-14 15:17
查看更多