题目:
var array = [1, [2, 3, [4, 5,], 6], 7, 8];
写一个方法flatArray(array ),得到[1, 2, 3, 4, 5, 6, 7, 8]
解答:
1.二逼写法:
function flatArray(arr) { var temp = arr.join().split(‘,‘), len = temp.length, result = []; for(var i=0; i<len; i++) { result.push(parseInt(temp[i])); } return result; }
2.递归:
function flatArray(arr) { var result = []; for(var i = 0, l = arr.length; i < l; i++){ if(arr[i] instanceof Array) { result = result.concat(arguments.callee(arr[i])); // 或result = result.concat(flatArray.call(this, arr[i])); } else { result.push(arr[i]); } } return result; }
3.forEach(或map、reduce等)
function flatArray(arr) { var result = []; arr.forEach(function(item, index, origin){ Array.isArray(item) ? result = result.concat(flatArray(item)) : result.push(item); }) return result; }
4.高端写法(闭包):
var flatArray = function(ret) { function toArr(arr) { arr.forEach(function(item) { item instanceof Array ? toArr(item) : ret.push(item); }); } return function(arr) { toArr(arr); return ret; } }([]);
时间: 2024-10-08 20:04:39