Table of Contents
Creating an array
Judge whether it is an array
Conversion between array-like and array
Array deduplication
1) Use set to remove duplicates
2) Double loop splice
3) Create a new array includes
4) reduce includes
5) Create a new array sort
6) Create a new array using object attributes
7) Using map
8) filter indexOf
Home Web Front-end JS Tutorial Summary and sharing of common operations on JavaScript arrays

Summary and sharing of common operations on JavaScript arrays

Feb 18, 2022 pm 05:16 PM
html javascript front end

This article brings you relevant knowledge about common array operations in javascript, including issues related to creating arrays, determining whether it is an array, array-like and array conversion, and array deduplication. I hope everyone has to help.

Summary and sharing of common operations on JavaScript arrays

Related recommendations: javascript learning tutorial

Creating an array

Creating an array is a basic skill. The methods mainly include the following:

const arr = [1,2,3]                   
// 数组字面量const arr = [,,,]                     
// 三元素空位数组(hole array)const arr = new Array(4)              
// [,,,,]const arr = new Array(4,2)            
// [4,2]const arr = Array.of(1,2,3)           
// [1,2,3]
Copy after login

Among them, the most commonly used method is the array literal method.

Judge whether it is an array

The main methods for judging whether it is an array are:

// 方法一[1,2,3] instanceof Array   
// 方法二[1,2,3].constructor === Array
// 方法三Object.prototype.toString.call([1,2,3]) === '[object Array]'
// 方法四Array.isArray([1,2,3])
// 方法五(兼容写法)function isArray(arr){
    return Array.isArray ? 
        Array.isArray(arr):Object.prototype.toString.call(arr) === '[object Array]'}
Copy after login

Generally the most commonly used method is isArray.

Conversion between array-like and array

The data structures we sometimes encounter are not pure arrays. They are generally classified as "array-like". Array-like can be converted into pure arrays by using the following methods. :

const x = document.querySelectorAll('a');
// 方法一Array.prototype.slice.call(x);
// 方法二Array.from(x);Array.from(x,mapFn,thisArg);
// 方法三[...x]
// 方法四function toArray(x){
    let res = []
    for(item of x){
        res.push(item)
    }
    return res}
    // 方法五Array.apply(null,x)
    // 方法六[].concat.apply([],x)
Copy after login

Methods 5 and 6 essentially take advantage of the characteristics of apply, that is, the second parameter (array or array-like) passed to apply will be converted into a parameter list, and these parameters will then be sent to the call method (new Array or concat).

Array deduplication

Array deduplication essentially requires comparing whether two elements are equal. If they are equal, discard one element. In order to judge accurately, Object.is is used for comparison here.

1) Use set to remove duplicates

set requires that the elements are not repeated, so you can remove duplicates after converting the array to a set, and then convert it back to an array.

function unique(arr){
    return Array.from(new Set(arr))
    // return [...new Set(arr)]}
Copy after login

2) Double loop splice

The outer loop traverses all elements, and the inner loop traverses all elements after the current element. If they are found to be equal, use splice to remove one. Remember that the inner loop must go back one space each time, otherwise some elements will be missed

function unique(arr){
    for(let i = 0;i < arr.length;i++){
        for(let j = i + 1;i < arr.length;j++){
            if(Object.is(arr[i],arr[j])){
                arr.splice(j,1)
                j--
            }
        }
    }
    return arr}
Copy after login

3) Create a new array includes

Create a new array and check it every time before adding elements to the array Whether the element already exists in the array:

function unique(arr){
    const res = []
    arr.forEach((item,index) => {
        // 也可以 if(res.indexOf(item) == -1),但是无法正确判断 NaN
        if(!res,includes(item)){
            res.push(item)
        }
    })}
Copy after login

4) reduce includes

function unique(arr){
    return arr.reduce((acc,cur) => {
        // return acc.includes(cur) ? acc : acc.concat(cur)
        return acc.includes(cur) ? acc : [...acc,cur]
    },[])}
Copy after login

5) Create a new array sort

According to the mechanism of sort (call toStrng on each element, Then sort at the string level) so that equal elements are clustered together. Create a new array. Each time before adding an element to the array, check whether the element is equal to the previous element. If it is, it is a repeated element:

function unique(arr){
    arr.sort()
    const res = [arr[0]]
    for(let i = 1;i < arr.length;i++){
        if(!Object.is(arr[i],arr[i-1])){
            res.push(arr[i])
        }
    }
    return res}
Copy after login

6) Create a new array using object attributes

This method In fact, it is the same as "new array includes". Create a new array, and each time before adding an element to the array, check whether the element has been used as an attribute of the object:

// 对象属性值可以认为是元素重复的次数function unique(arr){
    const res = []
    const obj = {}
    arr.forEach((item,index) => {
        if(!obj[item]){
            res.push(item)
            obj[item] = 1
        } else {
            obj[item]++
        }
    })
    return res}
Copy after login

What is detected here is the attribute name of the object, and the attribute name is essentially a string, so it will It is considered that obj[true] and obj["true"] are equal, resulting in element true or element "true" not being Can be put into a new array

7) Using map

is essentially the same as the above method, but there is no need to create a new array:

function unique(arr){
    let map = new Map()
    for(item of arr){
        if(!map.has(item)){
            map.set(item,true)
        }
    }
    return [...map.keys()]}
Copy after login

8) filter indexOf

Remove duplicate elements. Another way to understand it is to retain those elements whose index is equal to the index when first appears. Such elements can be filtered out with filter. Put it into an array:

function unique(arr){
    return arr.filter((item,index) => index === arr.indexOf(item))}
Copy after login

The disadvantage of using indexOf is that it cannot correctly judge NaN.

Related recommendations: javascript learning tutorial

The above is the detailed content of Summary and sharing of common operations on JavaScript arrays. For more information, please follow other related articles on the PHP Chinese website!

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)

Table Border in HTML Table Border in HTML Sep 04, 2024 pm 04:49 PM

Guide to Table Border in HTML. Here we discuss multiple ways for defining table-border with examples of the Table Border in HTML.

HTML margin-left HTML margin-left Sep 04, 2024 pm 04:48 PM

Guide to HTML margin-left. Here we discuss a brief overview on HTML margin-left and its Examples along with its Code Implementation.

Nested Table in HTML Nested Table in HTML Sep 04, 2024 pm 04:49 PM

This is a guide to Nested Table in HTML. Here we discuss how to create a table within the table along with the respective examples.

HTML Table Layout HTML Table Layout Sep 04, 2024 pm 04:54 PM

Guide to HTML Table Layout. Here we discuss the Values of HTML Table Layout along with the examples and outputs n detail.

HTML Input Placeholder HTML Input Placeholder Sep 04, 2024 pm 04:54 PM

Guide to HTML Input Placeholder. Here we discuss the Examples of HTML Input Placeholder along with the codes and outputs.

Moving Text in HTML Moving Text in HTML Sep 04, 2024 pm 04:45 PM

Guide to Moving Text in HTML. Here we discuss an introduction, how marquee tag work with syntax and examples to implement.

HTML Ordered List HTML Ordered List Sep 04, 2024 pm 04:43 PM

Guide to the HTML Ordered List. Here we also discuss introduction of HTML Ordered list and types along with their example respectively

HTML onclick Button HTML onclick Button Sep 04, 2024 pm 04:49 PM

Guide to HTML onclick Button. Here we discuss their introduction, working, examples and onclick Event in various events respectively.

See all articles