数组扁平化函数flat:
var arr = ['a','b',['1','2',['3','4']],'c'];
/*方法一:*/
function flat(arr){
var result = [];
var each = function(arr){
arr.forEach(function(i){
if(i instanceof Array){
each(i);
} else {
result.push(i);
}
});
}
each(arr);
return result.join(',');
}
var result = flat(arr);
console.log(result);
/*方法二:*/
function flat(arr){
var stringValue = Array.prototype.toString;
Array.prototype.toString = function(){
return this.join(',');
}
var result = arr + '';
Array.prototype.toString = stringValue;
return result;
}
/*方法三:*/
function flat(){
var Value = Array.prototype.valueOf;
Array.prototype.valueOf = function(){
return this.join(',');
}
var result = arr + '';
Array.prototype.valueOf = Value;
return result;
}
/*方法四:*/
Array.prototype[Symbol.iterator] = function(){ //ES6中Symbol类型
var arr = [].concat(this);
var getfirst = function(array){
var first = array.shift();
return first;
};
return {
next: function(){
var item = getfirst(arr);
if(item){
return {
value: item,
done: false
};
} else {
return {
done: true
};
}
}
}
};
function flat(arr){
var result = [];
for(var i in arr){
result.push(i);
}
return result.join(',');
}
var result = flat(arr);
console.log(result);