n维数组展开成一维数组

var foo = [1,[2,3],['4',5,['6',7,[8]]],[9],10];

//方法1 
//限制:数组项不能出现',',同时数组项全部变成了字符数字
foo.toString().split(',');//["1","2","3","4","5","6","7","8","9","10"]

//方法2
//转换后数组项全部变成数字了
eval('[' + foo + ']');//[1,2,3,4,5,6,7,8,9,10]

//方法3,使用ES6展开操作符
//写法太过麻烦,太过死板
[1, ...[2, 3], ...['4', 5, ...['6',7,...[8]]], ...[9], 10];  // [1, 2, 3, "4", 5, "6", 7, 8, 9, 10]

//方法4
JSON.parse(`[${JSON.stringify(foo).replace(/\[|]/g, '')}]`);//[1,2,3,"4",5,"6",7,8,9,10]

//方法5
const flatten = (ary) =>ary.reduce((a,b)=>a.concat(Array.isArray(b) ? flatten(b) : b), []);
flatten(foo);//[1,2,3,"4",5,"6",7,8,9,10]

//方法6
function flatten(a){
    return Array.isArray(a) ? [].concat(...a.map(flatten)) : a;
}
flatten(foo);//[1,2,3,"4",5,"6",7,8,9,10]

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值