Home Web Front-end JS Tutorial Introduction to using JavaScript Array Flatten and recursion_javascript skills

Introduction to using JavaScript Array Flatten and recursion_javascript skills

May 16, 2016 pm 06:00 PM
array

How to use JavaScript to convert an Array like [1,2,3,[4,5, [6,7]], [[[8]]]] into [1,2,3,4,5, 6,7 ,8] What about? The legendary Array Flatten.

To deal with this kind of problem, we usually need recursion to let the program loop according to an algorithm. A book says, "Recursion is a powerful programming technique." Well, it doesn't just belong to JavaScript. Recursion can be difficult, or it can be relatively simple (it is still relatively difficult in general). To deal with the above problem, it should be more suitable to use recursion. A worker has implemented this before, which is a simple example of recursive use:

Copy the code The code is as follows:

flatten: function(ac){
var array = [];
var group = this.arr;
if(ac) group = ac;
for (var i = 0; i < group.length; i ){
if(group[i] instanceof Array){
array = array.concat(this.flatten(group[i]));
}else{
array = array.concat(group[i]);
}
}
return array;
}

in if(group[i] instanceof Array ), call the function itself and perform recursion by passing parameters. Just when I was refactoring Array.js, I felt that since it is a framework, it would be too wasteful to not use so many abstract things. Therefore, it is better to call the static function that has been abstracted instead of doing it all over again. There's a for loop here, which means we're going to need each. The result? Four words, difficult to implement. Because we always have to create an array, and finally return this new array, we have to extract a new function to adjust it. Doesn’t this defeat the original intention?

I took a look online and finally settled on the prototype. His implementation method is to abstract a function that handles recursive increments, and then use this function to do recursion. How to say it? I want to say, this is called a framework. The following is a function that handles recursion:
Copy code The code is as follows:

function inject(memo , iterator, context) {
this.each(function(value, index) {
memo = iterator.call(context, memo, value, index);
});
return memo;
}

The final implementation of this flatten function is like this, this code is so beautiful:
Copy code The code is as follows:

function flatten() {
return this.inject([], function(array, value) {
if (Object.isArray( value))
return array.concat(value.flatten());
array.push(value);
return array;
});
}

Of course, another abstract function is needed to handle the for loop, which is our each function. By the way, bring out this each function in flatten, learn how jQuery does it, and add native support; of course, you can also handle pure objects, not just arrays:
Copy code The code is as follows:

each: function (callback, bind) {
var isObject = arale.typeOf(this.obj) === 'object',
i = 0,
key;

if (isObject) {
var obj = this.obj;
for (key in obj) {
if (callback.call(bind, key, obj[key]) === false) {
break;
}
}
} else {
var arr = this.obj;
if (Array.prototype.forEach) {

// Will continue to execute when the user returns false;
// The native one is very embarrassing, should I leave it or leave it? marked TODO;
return [].forEach.call(arr, callback, bind);
};
for (var value = arr[0], length = arr.length; i < length && callback.call(bind , i, value) !== false; value = arr[ i]) {};
}
}

I’ve been playing a lot with Javascript recently. I took a look at the recent articles and the articles posted on the team's internal blog. They are all written in JS. Embarrassing. Seems like a big change. Need to balance it out.
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

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Sort array using Array.Sort function in C# Sort array using Array.Sort function in C# Nov 18, 2023 am 10:37 AM

Title: Example of using the Array.Sort function to sort an array in C# Text: In C#, array is a commonly used data structure, and it is often necessary to sort the array. C# provides the Array class, which has the Sort method to conveniently sort arrays. This article will demonstrate how to use the Array.Sort function in C# to sort an array and provide specific code examples. First, we need to understand the basic usage of the Array.Sort function. Array.So

Simple and clear method to use PHP array_merge_recursive() function Simple and clear method to use PHP array_merge_recursive() function Jun 27, 2023 pm 01:48 PM

When programming in PHP, we often need to merge arrays. PHP provides the array_merge() function to complete array merging, but when the same key exists in the array, this function will overwrite the original value. In order to solve this problem, PHP also provides an array_merge_recursive() function in the language, which can merge arrays and retain the values ​​of the same keys, making the program design more flexible. array_merge

How to use the array_combine function in PHP to combine two arrays into an associative array How to use the array_combine function in PHP to combine two arrays into an associative array Jun 26, 2023 pm 01:41 PM

In PHP, there are many powerful array functions that can make array operations more convenient and faster. When we need to combine two arrays into an associative array, we can use PHP's array_combine function to achieve this operation. This function is actually used to combine the keys of one array as the values ​​of another array into a new associative array. Next, we will explain how to use the array_combine function in PHP to combine two arrays into an associative array. Learn about array_comb

Detailed explanation of PHP array_fill() function usage Detailed explanation of PHP array_fill() function usage Jun 27, 2023 am 08:42 AM

In PHP programming, array is a very important data structure that can handle large amounts of data easily. PHP provides many array-related functions, array_fill() is one of them. This article will introduce in detail the usage of the array_fill() function, as well as some tips in practical applications. 1. Overview of the array_fill() function The function of the array_fill() function is to create an array of a specified length and composed of the same values. Specifically, the syntax of this function is

What are the common causes of ArrayIndexOutOfBoundsException in Java? What are the common causes of ArrayIndexOutOfBoundsException in Java? Jun 24, 2023 pm 10:39 PM

Java is a very powerful programming language that is widely used in various development fields. However, during Java programming, developers often encounter ArrayIndexOutOfBoundsException exceptions. So, what are the common causes of this anomaly? ArrayIndexOutOfBoundsException is a common runtime exception in Java. It means that when accessing data, the array subscript exceeds the range of the array. Common reasons include

Introduction to how to use the PHP array_change_key_case() function Introduction to how to use the PHP array_change_key_case() function Jun 27, 2023 am 10:43 AM

In PHP programming, array is a frequently used data type. There are also quite a few array operation functions, including the array_change_key_case() function. This function can convert the case of key names in the array to facilitate our data processing. This article will introduce how to use the array_change_key_case() function in PHP. 1. Function syntax and parameters array_change_ke

How to convert LinkedList to Array in Java? How to convert LinkedList to Array in Java? Aug 29, 2023 pm 11:09 PM

The toArray() method of the LinkedList class converts the current LinkedList object into an array of object type and returns it. This array contains all the elements in this list in correct order (from first element to last element). It acts as a bridge between array-based and collection-based APIs. So, convert LinkedList to array - instantiate LinkedList class. Populate it using the add() method. Call the toArray() method on the linked list created above and retrieve the array of objects. Converts each element of an array of objects to a string. Example Real-time demonstration of importjava.util.Arrays;importjava.uti

How to use the Array module in Python How to use the Array module in Python May 01, 2023 am 09:13 AM

The array module in Python is a predefined array, so it takes up much less space in memory than a standard list, and can also perform fast element-level operations such as adding, deleting, indexing, and slicing. In addition, all elements in the array are of the same type, so you can use the efficient numerical operation functions provided by the array, such as calculating the average, maximum, and minimum values. In addition, the array module also supports writing and reading array objects directly into binary files, which makes it more efficient when processing large amounts of numerical data. Therefore, if you need to process a large amount of homogeneous data, you may consider using Python's array module to optimize the execution efficiency of your code. To use the array module, you first need to

See all articles