香港六马会开奖结果-六合彩特码资料-本港台最快开奖直播

[2019]让您放心游戏,提供六合彩特码资料最丰厚回馈!,本港台最快开奖直播是为您电脑安全以及资金安全的考虑,所以说压实向感受娱乐首先应该进下载时必不可少的。

香港六马会开奖结果Javascript中apply方法的妙用
分类:操作系统

清淡的数组降维——Javascript中apply方法的妙用

2016/02/18 · JavaScript · apply, 数组

原来的文章出处: ralph_zhu   

将多维数组(尤其是二维数组)转变为风流倜傥维数组是事情开支中的常用逻辑,除了运用节约财富的轮回转变以外,我们还可以动用Javascript的语言特征实现更为精练高贵的转移。本文将从节约的循环调换开端,逐条介绍三种常用的调换方法,并借此简单回想Array.prototype.concat方法和Function.prototype.apply方法。
以下代码将以把二维数组降维到大器晚成维数组为例。

  1. 勤政的调换

JavaScript

function reduceDimension(arr) { var reduced = []; for (var i = 0; i < arr.length; i++) { for (var j = 0; j < arr[i].length; j++) { reduced.push(arr[i][j]); } } return reduced; }

1
2
3
4
5
6
7
8
9
function reduceDimension(arr) {
    var reduced = [];
    for (var i = 0; i < arr.length; i++) {
        for (var j = 0; j < arr[i].length; j++) {
            reduced.push(arr[i][j]);
        }
    }
    return reduced;
}

此方式思路轻便,利用再度循环遍历二维数组中的各个成分并置于新数组中。

 

  1. 利用concat转换
    先来回看一下MDN上对于该方法的牵线:
    “concat creates a new array consisting of the elements in the object on which it is called, followed in order by, for each argument, the elements of that argument (if the argument is an array) or the argument itself (if the argument is not an array).”

即借使concat方法的参数是一个因素,该因素会被直接插入到新数组中;假诺参数是叁个数组,该数组的逐一要素将被插入到新数组中;将该天性应用到代码中:

JavaScript

function reduceDimension(arr) { var reduced = []; for (var i = 0; i < arr.length; i++){ reduced = reduced.concat(arr[i]); } return reduced; }

1
2
3
4
5
6
7
function reduceDimension(arr) {
    var reduced = [];
    for (var i = 0; i < arr.length; i++){
        reduced = reduced.concat(arr[i]);
    }
    return reduced;
}

arr的每二个成分都以贰个数组,作为concat方法的参数,数组中的每二个子成分又都会被单独插入进新数组。
应用concat方法,我们将再也循环简化为了单重循环。

 

  1. 利用apply和concat转换
    依照常规,先来回顾一下MDN上对于apply方法的介绍:
    “The apply() method calls a function with a given this value and arguments provided as an array.”

即apply方法会调用贰个函数,apply方法的第一个参数会作为被调用函数的this值,apply方法的第三个参数(多少个数组,或类数组的指标)会作为被调用对象的arguments值,也等于说该数组的逐个要素将会相继成为被调用函数的依次参数;将该性格应用到代码中:

function reduceDimension(arr) { return Array.prototype.concat.apply([], arr); }

1
2
3
function reduceDimension(arr) {
    return Array.prototype.concat.apply([], arr);
}

arr作为apply方法的第1个参数,自身是一个数组,数组中的每一个要素(照旧数组,即二维数组的第二维)会被当做参数依次传入到concat中,效果一样[].concat([1,2], [3,4], [5,6])。
行使apply方法,大家将单重循环优化为了生机勃勃行代码,很简短有型有木有啊~

读者也可参照他事他说加以考察本文思路,本身使用递归达成N维数组降维的逻辑。

3 赞 8 收藏 评论

香港六马会开奖结果 1

本文由香港六马会开奖结果发布于操作系统,转载请注明出处:香港六马会开奖结果Javascript中apply方法的妙用

上一篇:没有了 下一篇:没有了
猜你喜欢
热门排行
精彩图文