数组--二维数组转为一维数组

a.二维数组转为一维数组:

i.reduce() 方法

接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。对空数组是不会执行回调函数的

语法:array.reduce(function(total,currentValuue,currentIndex,arr),initiaValue)

let arr = [
            [1, 4, 5, 6],
            [8, 4, 7, 6],
            [1, 5, 10, 47]
        ];

let arr1 = arr.reduce((total, currentValue) => {
        return total.concat(currentValue);
    });
console.log(arr1);

 

 ii.map()

map()方法定义在JavaScript的Array中,返回一个新的数组,新返回数组中的每个元素为原始数组的每一个元素分别调用map中的回调函数处理后的值

注意:

  • 不会对空数组进行检测
  • 不会改变原始数组(返回新数组)
  • 不会为数组中缺少的元素调用回调函数
  • 除数组对象外,map()可由具有length属性且具有已按数字编制索引名的任何对象使用(如字符串对象)

语法:

array.map(function(currentValue, index, arr), thisIndex)
  1. currentValue必须。当前元素的的值。
  2. index可选。当前元素的索引。
  3. arr可选。当前元素属于的数组对象。
  4. thisValue可选。对象作为该执行回调时使用,传递给函数,用作"this"的值
let arr = [
            [1, 4, 5, 6],
            [8, 4, 7, 6],
            [1, 5, 10, 47]
        ];
function flatten(arr) {
     /**
      * ...arr ==> 等价于 [1, 4, 5, 6] [8, 4, 7, 6] [1, 5, 10, 47]
      * currentValue => 等价于 上面的一个个一维数组
      */
       return [].concat(...arr.map(currentValue => Array.isArray(currentValue) ? flatten(currentValue) : currentValue))
        }
var arr2 = flatten(arr);

console.log(arr2);

iii.apply()

Function.apply(obj,args)方法能接收两个参数
obj:这个对象将代替Function类里this对象
args:这个是数组,它将作为参数传给Function(args-->arguments)

可以将一个数组默认的转换为一个参数列表:[param1,param2,param3] 转换为 param1,param2,param3

let arr = [
            [1, 4, 5, 6],
            [8, 4, 7, 6],
            [1, 5, 10, 47]
        ];
var arr2 = [].concat.apply([], arr);

console.log(arr2);

iv.split()

通过将数组转变成字符串,利用str.split(',')实现

var arr = [
            [1, 4, 5, 6],
            [8, 4, 7, 6],
            [1, 5, 10, 47]
        ];

var arr1 = (arr + '').split(',');

// var arr1 = arr.toString().split(',');

// var arr1 = arr.join().split(',');
console.log(arr1);


  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白小白从不日白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值