當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
实现JavaScript数组拍平/扁平化的方法
生活随笔
收集整理的這篇文章主要介紹了
实现JavaScript数组拍平/扁平化的方法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
實現JavaScript數組拍平/扁平化的方法
請寫出一個數組拍平函數,效果如下:
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));總結
以上是生活随笔為你收集整理的实现JavaScript数组拍平/扁平化的方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 常见的面向对象的面试题(附答案)
- 下一篇: 微信小程序 - 实现左滑动删除功能