金狮镖局 Design By www.egabc.com
题目:
请写出一个数组拍平函数。效果如下:
var arr=['a', ['b', 'c'], 2, ['d', 'e', 'f'], 'g', 3, 4];
flat(arr) //a,b,c,2,d,e,f,g,3,4
方法一:使用toString方法先将arr转换为一个字符串, 再以split分割为数组,再将数组里面的元素转换为数字类型
var arr =['a', ['b', 'c'], 2, ['d', 'e', 'f'], 'g', 3, 4]; function flat(arr) { return arr.toString().split(',').map(function(item){ return Number(item) }) } console.log(flat(arr))
方法二: toString 格式转换 与方法一类似 都是隐士类型转换
var arr = ['a', ['b', 'c'], 2, ['d', 'e', 'f'], 'g', 3, 4]; // 方法二:toString(格式转换) var flag = function(arr) { let toString = Array.prototype.toString; Array.prototype.toString = function() { return this.join(','); }; let result = arr + ''; Array.prototype.toString = toString; return result; }; console.log(flag(arr));
方法三: valueOf(格式转换) 与方法一 二类似 都是隐士类型转化原理
// 方法三:valueOf(格式转换) Array.prototype.valueOf = function() { return this.join(','); }; var flat = function(arr) { return arr + ''; }; console.log(flat(['a', ['b', 'c'], 2, ['d', 'e', 'f'], 'g', 3, 4]));
方法四: 利用reduce特性
function flat(arr) { return newArr = arr.reduce((a, b) => { return a.concat(b) }, []) } var arr = ['a', ['b', 'c'], '2', ['d', 'e', 'f'], 'g', 3, 4]; console.log(flat(arr));
方法五:利用递归
function flat(array) { var result = []; var each = function(arr) { arr.forEach(item => { if (item instanceof Array) { each(item); } else { result.push(item); } }); }; each(array); return result.join(','); } var arr = ['a', ['b', 'c', [7, 8]], 2, ['d', 'e', 'f'], 'g', 3, 4]; console.log(flat(arr));
方法六: ES6的遍历器 Iterator 给数据结构增加遍历器必须增加一个next方法
// Iterator Array.prototype[Symbol.iterator] = function() { let arr = [].concat(this); // arr=['a', ['b', 'c'], '2', ['d', 'e', 'f'], 'g', 3, 4] let getFirst = function(array) { let first = array.shift(); if (first instanceof Array) { if (first.length > 1) { arr = first.slice(1).concat(array); } first = first[0]; } return first; }; return { next: function() { //类似与遍历 let item = getFirst(arr); if (item) { return { value: item, done: false, }; } else { return { done: true, }; } }, }; }; var flat = function(arr) { let r = []; for (let i of arr) { r.push(i); } // i 已经是单个元素 return r.join(','); }; var arr = ['a', ['b', 'c'], '2', ['d', 'e', 'f'], 'g', 3, 4]; console.log(flat(arr));
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
标签:
Js,数组扁平化
金狮镖局 Design By www.egabc.com
金狮镖局
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
金狮镖局 Design By www.egabc.com
暂无Js数组扁平化实现方法代码总汇的评论...
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新日志
2025年01月04日
2025年01月04日
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]