JavaScript扁平化数组

假设我们有一个无限嵌套的数组,其结构如下:

			var arr = [
				[1, 2, 2],
				[3, 4, 5, 6],
				[6, 7, 8, 9,
					[10, 11, 12,
						[12, 13, 14,
							[15, 16],
						17],
					18],
				19]
			];

基本上就是一个数组内部的所有元素既有可能是数字,也可能是数组。
我们需要将其扁平化成一维数组。

			// 扁平化数组
			function flat(a) {
				var res = [];
				for (let e of a) {
					if (Object.prototype.toString.call(e) === "[object Array]") {
						// 判断其是数组,则递归
						res = res.concat(flat(e))
					} else {
						res.push(e);
					}
				}
				return res;
			}

测试结果: