365bet亚洲版登录-bet官网365入口

365bet亚洲版登录拥有超过百间客房,bet官网365入口的文化历经几十年的传承和积淀形成的核心内容获得业界广泛的认可,365bet亚洲版登录是目前信誉最高的娱乐场所,同国内外几百家网上内容供应商建立了合作关系。

大雅的数组降维

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

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

初藳出处: ralph_zhu   

将多维数组(特别是二维数组卡塔 尔(英语:State of Qatar)转化为生机勃勃维数组是事情支付中的常用逻辑,除了使用节能的轮回调换以外,大家还足以动用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方法的第二个参数,本人是多少个数组,数组中的每二个因素(照旧数组,即二维数组的第二维卡塔尔会被充任参数依次传入到concat中,效果等同[].concat([1,2], [3,4], [5,6])。
行使apply方法,大家将单重循环优化为了生机勃勃行代码,很简单有型有木有啊~

读者也可参照本文思路,自个儿使用递归达成N维数组降维的逻辑。

3 赞 8 收藏 评论

图片 1

本文由365bet亚洲版登录发布于 Web前端,转载请注明出处:大雅的数组降维

您可能还会对下面的文章感兴趣: