Home > Web Front-end > JS Tutorial > How to flatten a javascript array?

How to flatten a javascript array?

亚连
Release: 2018-06-11 14:21:11
Original
2899 people have browsed it

This article gives you a detailed analysis of the method of flattening javascript arrays. Friends who are interested in this can learn it together.

In the development process, we sometimes 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 better methods, you can post them 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))
Copy after login

The execution result is:

This method above It 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))
Copy after login

The above code uses a new feature of ES6 to extend the cloud algorithm "...", "[...abc,...fff]" is equivalent to abc.concat(fff). This usage is more intuitive and clear, and it also uses the reduce method. reduce is a method of array 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.

The above is what I compiled for everyone. I hope it will be helpful to everyone in the future.

Related articles:

How to use js to invoke App in WeChat?

Using cli mui in Vue related to area scrolling issues

Online paid courses in vue (detailed tutorial)

Comparison of the use of express and koa (detailed tutorial)

The first time to use stylus installation method in vue (detailed tutorial)

Goods component development in the Vue framework

The above is the detailed content of How to flatten a javascript array?. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template