In the development process, we always encounter some common problems, such as flattening a two-dimensional array into a one-dimensional array, or flattening a three-dimensional array into a one-dimensional array. These problems will always be rethought when encountered, so it is better to refine them and summarize them.
The author below will demonstrate to you two methods of flattening a multi-dimensional array into a one-dimensional array. It can be regarded as a starting point. If you have a better method, you can post it in the message area.
The first is the first method, recursive processing, the code is as follows:
var arr = [1, 2, 3, [3, 3, 3, [5, 4, 5, 6, 6, 7, 8]], [333, 4444] ]; function product() { // 1、创建一个空数组, var newarr = []; ///2、并且返回一个函数,函数参数为要拍平的数组 return function flatten(arr) { // 3、循环数组,判断每一项,不为输的话将其塞入newarr // 若为数组,递归调用 faltten,并将结果与newarr合并 for (var t of arr) { if (!Array.isArray(t)) { newarr.push(t); } else { newarr.concat(flatten(t)) } } return newarr } } var flatten = product(); console.log(flatten(arr))
The execution result is:
The above method is quite satisfactory. Please see the comments for a detailed explanation of the code. The following method uses some new features of the JavaScript language. The code is as follows:
var arr = [1, 2, 3, [3, 3, 3, [5, 4, 5, 6, 6, 7, 8]], [333, 4444] ]; function flatten(arr){ return arr.reduce(function(pre,cur){ if(!Array.isArray(cur)){ return [...pre,cur]; }else{ return [...pre,...flatten(cur)] } },[]) } console.log(flatten(arr))
Above The code uses a new feature of ES6 to extend the cloud algorithm "...", "[...abc,...fff]" whose function is equivalent to abc.concat(fff), this usage is more intuitive and clear, and also There is the use of the reduce method. reduce is a method of arrays in javascript language.
When calling the recduce method on an array, you can pass two parameters. The first parameter is the callback function, and the second parameter is an initial value. Two parameters need to be passed in the callback function. The first parameter is the return value of each execution of the function, and the second parameter is the value of the array corresponding to the current index. The second parameter of reduce can be omitted. If it is omitted, the parameters of the first call of the callback function are the values of the first and second items of the array. If not omitted, the first parameter of the callback function is this initial value. . In the above example, the second parameter of reduce is set to an empty array.
Reduce document address: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce
Compared to the first The first one is easier to understand, while the difficulty of the second one lies in the use and understanding of the reduce function.
Related recommendations:
About the square root problem in PHP
The above is the detailed content of The javascript array flattening method is explained in detail. For more information, please follow other related articles on the PHP Chinese website!