广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >JavaScript数组常见操作技巧
  • 781
分享到

JavaScript数组常见操作技巧

2024-04-02 19:04:59 781人浏览 独家记忆
摘要

目录一、创建数组二、判断是不是数组三、类数组和数组的转换四、数组去重1.利用 set 去重2.双重循环 + splice3.新建数组 + includes4.reduce + inc

本文主要包括:

  • 创建数组
  • 判断是不是数组
  • 类数组和数组的转换
  • 数组去重
  • 各位看官可根据自身需求选择食用。

一、创建数组

创建数组是基本功,其方法主要包括以下几种:

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]

其中,我们一般最常用的是数组字面量法。

二、判断是不是数组

判断是不是数组的方法主要有:

// 方法一
[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]'
}

一般最常用的应该是 isArray 方法。

三、类数组和数组的转换

我们有时碰到的数据结构不是纯数组,一般将其归类为“类数组”,类数组可以借助以下方法转为纯数组:

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)

方法五和六本质上都是利用了 apply 的特点,即传给 apply 的第二个参数(数组或者类数组)会被转换为一个参数列表,这些参数再送到调用的方法(new Array 或者 concat)中。

四、数组去重

数组去重,本质上都需要比较两个元素是否相等,如果相等,则抛弃一个元素。为了准确地判断,这里统一使用 Object.is 进行比较。

1.利用 set 去重

set 要求元素不重复,因此将数组转换为 set 之后就可以去重了,接着再转换回数组即可。

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

2.双重循环 + splice

外层循环遍历所有元素,里层循环遍历当前元素往后的所有元素,若发现相等则利用 splice 移除掉一个。记得里层循环每次要回退一格,否则会遗漏掉某些元素

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
}

3.新建数组 + includes

新建数组,每次往数组中添加元素之前都检查数组中是否已有该元素:

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

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]
    },[])
}

5.新建数组 + sort

根据 sort 的机制(在每个元素上调用 toStrng,之后在字符串层面进行排序),让相等的元素聚集在一起。新建数组,每次往数组中添加元素之前都检查该元素是否等于前面的元素,是则属于重复元素:

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
}

6.新建数组 + 利用对象属性

这种方法其实和“新建数组 + includes”一样。新建数组,每次往数组中添加元素之前都检查该元素是否已经作为对象的属性:

// 对象属性值可以认为是元素重复的次数
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
}

这里检测的是对象的属性名,而属性名本质上是一个字符串,因此会认为 obj[true] 和 obj["true"] 是相等的,从而导致元素 true 或者元素 "true" 未能放入新数组中

7.利用 map

本质上和上面的方法是一样的,但是不需要新建数组:

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

8.filter + indexOf

去掉重复的元素,换个角度来理解就是保留那些 索引 等于 第一次出现时的索引 的元素,这样的元素可以用 filter 筛选出来,放到一个数组中:

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

使用 indexOf 的缺点是无法正确判断 NaN。

到此这篇关于javascript 数组常见操作技巧的文章就介绍到这了,更多相关JavaScript 数组操作技巧内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: JavaScript数组常见操作技巧

本文链接: https://www.lsjlt.com/news/138256.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • JavaScript数组常见操作技巧
    目录一、创建数组二、判断是不是数组三、类数组和数组的转换四、数组去重1.利用 set 去重2.双重循环 + splice3.新建数组 + includes4.reduce + inc...
    99+
    2022-11-13
  • JavaScript数组常见操作技巧(二)
    目录一、出数组中的重复元素或非重复元素二、数组扁平化 / 数组降维二维数组:双重循环二维数组:循环 + concat二维数组:reduce + concat二维数组:展开 / app...
    99+
    2022-11-13
  • JavaScript数组常见操作技巧有哪些
    这篇文章主要介绍“JavaScript数组常见操作技巧有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“JavaScript数组常见操作技巧有哪些”文章能帮助大家解决问题。一、创建数组创建数组是基...
    99+
    2023-06-29
  • JavaScript中数组常见的操作技巧分享
    这篇文章主要讲解了“JavaScript中数组常见的操作技巧分享”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JavaScript中数组常见的操作技巧分享”...
    99+
    2022-10-19
  • JavaScript数组操作技巧有哪些
    这篇“JavaScript数组操作技巧有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“JavaScript数组操作技巧有...
    99+
    2023-06-27
  • JavaScript数组常见操作有哪些
    这篇文章主要为大家展示了“JavaScript数组常见操作有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“JavaScript数组常见操作有哪些”这篇文章吧...
    99+
    2022-10-19
  • 总结20个常见的JavaScript数组操作
    JavaScript中的Array对象与其他编程语言中的数组一样,是一组数据的集合。在JavaScript中,数组里面的数据可以是不同类型的,并具有用于执行数组常见操作的方法。声明数组有三种不同的声明方式1. 常规方式const hobby...
    99+
    2023-05-14
    前端
  • 20个常见的JavaScript数组操作总结
    目录声明数组1. 常规方式2. 简洁方式3. 字面Array 对象方法1. forEach2. map3. concat4. push5. unshift6. pop7. shift...
    99+
    2022-11-13
  • Python中字符串的常见操作技巧总结
    本文实例总结了Python中字符串的常见操作技巧。分享给大家供大家参考,具体如下: 反转一个字符串 >>> S = 'abcdefghijklmnop' >>> S[...
    99+
    2022-06-04
    字符串 操作技巧 常见
  • Python中文件操作的常见问题及技巧
    Python中文件操作的常见问题及技巧一、文件操作的常见问题文件路径问题:当我们需要操作文件时,首先需要确保我们对文件的路径是正确的。常见的问题包括:文件路径不存在:当我们指定的文件路径不存在时,Python会抛出FileNotFoundE...
    99+
    2023-10-22
    文件拷贝 文件路径处理 常见问题:文件读写 文件不存在处理 技巧:文件追加写入
  • PHP数组的常见操作和常用函数
    一.数组遍历 在操作数组时,经常需要依次访问数组中的每个元素,这种操作称为数组的遍历。 在PHP中,通常使用foreach语句实现数组的遍历,其语法格式有两种,具体如下:  以上两种语法格式都是通过foreach语句来实现对数组的遍历,不同...
    99+
    2023-09-05
    php 开发语言
  • Python中最常见的文件操作技巧有哪些
    本篇内容介绍了“Python中最常见的文件操作技巧有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!打开&关闭文件读取或写入文件前...
    99+
    2023-06-16
  • Java中数组的常见操作合集
    目录数组的常见操作数组越界异常数组空指针异常数组遍历数组获取最大值元素数组反转数组作为方法参数和返回值数组作为方法参数数组作为方法返回值数组的常见操作 数组越界异常 public s...
    99+
    2022-11-13
  • MySQL数据库的常用操作和技巧
    本篇内容主要讲解“MySQL数据库的常用操作和技巧”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL数据库的常用操作和技巧”吧!  使用MySQL数据库,...
    99+
    2022-10-18
  • Python数组操作有哪些高级技巧?
    Python是一种功能强大的编程语言,广泛应用于数据科学和机器学习领域。在Python中,数组是一种常见的数据结构,它可以存储多个元素,并且可以进行各种操作。本文将介绍Python数组操作中的一些高级技巧。 使用numpy库 Numpy...
    99+
    2023-10-17
    数组 laravel spring
  • Django 中的数组操作技巧大揭秘!
    Django 是一款非常流行的 Python Web 框架,它提供了许多方便的工具和技巧来帮助开发者更快更好地构建 Web 应用。其中,数组操作是 Django 中非常重要的一部分,今天我们就来揭秘一下 Django 中的数组操作技巧。 一...
    99+
    2023-08-24
    数组 django windows
  • javascript拷贝数组的技巧
    这篇文章主要介绍“javascript拷贝数组的技巧”,在日常操作中,相信很多人在javascript拷贝数组的技巧问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”javasc...
    99+
    2022-10-19
  • PHP中常见的数组操作有哪些?
    PHP是一种广泛使用的服务器端编程语言,也是互联网应用开发中非常重要的一部分。在PHP中,数组是一种非常常见的数据类型,它可以用于存储和操作一组相关的数据。在本文中,我们将介绍PHP中常见的数组操作,希望对PHP开发者有所帮助。创建数组在P...
    99+
    2023-05-22
    PHP数组操作 常见数组操作 PHP数组方法
  • winxp 的常用操作及技巧
    <清除 WinXP Shared Folders--就是在“我的计算机“里那些碍眼的分享数据夹> --请从registry删掉以下code-- HKEY_LOCAL_MACHINE ...
    99+
    2023-05-23
    winxp 的常用 技巧 操作
  • ASP入门必备:同步数组操作技巧。
    ASP入门必备:同步数组操作技巧 如果你正在学习ASP编程语言,那么你一定知道,数组是一个非常重要的数据类型。在ASP中,数组可以用于存储一组相关的数据,例如数字、字符串、对象等。在很多情况下,你需要对数组进行操作,例如插入、删除、查找等等...
    99+
    2023-11-04
    同步 数组 教程
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作