资讯专栏INFORMATION COLUMN

JavaScript数据结构与算法——数组

codeKK / 3295人阅读

摘要:数据结构的分类数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成。数据一般存储着一系列数据类型相同的值,但在中,可以在数组中保存不同类型的值,但一般不需要这么用。

数据结构的分类

数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成 。
常用的数据结构有:数组,栈,链表,队列,树,图,堆,散列表等,如图所示:

数组
数组是最简单的内存数据结构,数组是可以再内存中连续存储多个元素的结构,在内存中的分配也是连续的,数组中的元素通过数组下标进行访问,数组下标从0开始。
tips:数据一般存储着一系列数据类型相同的值,但在JavaScript中,可以在数组中保存不同类型的值,但一般不需要这么用。

1.创建数组

let daysOfWeek = new Array();
let daysOfWeek = new Array(7);
let daysOfWeek = new Array("1", "2", "3", "4", "5", "6", "7");

2.添加元素

// 初始化nums数组
let nums = [0,1,2,3,4,5,6];
// 指定位置添加
nums[nums.length] = 7;
// 使用push(),把元素添加到数组末尾
nums.push(8);// 0...8
nums.push(9, 10);// 0...10
// 使用unshift,把元素添加到数组首位
nums.unshift(-1);// -1...10
nums.unshift(-3,-2);// -3...10

3.删除元素

// pop(),删除最后一个
nums.pop();//-3...9
// shift(),删除第一个
nums.shift();//-2...9

4.任何位置删除或添加元素

// splice()方法
nums.splice(2, 3);// 删除 index=2 开始的后的3个数 -2,-1,3...9
nums.splice(2, 0, 0, 1, 2);// 从index=2开始插入0,1,2  -2...9

5.javascript数组方法参考

concat()  // 连接2个或多个数组,并返回结果
every()  // 对数组中的每一项运行给定函数,如果该函数对每一项都返回true,则返回true
filter()  // 对数组中的每一项运行给定函数,返回该函数能返回true的项作为新数组
forEach()  // 对数组中的每一项运行给定函数,没有返回值
join()  // 按传入的字符连接成一个字符串
indexOf()  // 从前往后遍历,返回第一个与传入参数相等的索引值,没找到返回-1
lastIndexOf()  // 从后往前遍历,返回第一个与传入参数相等的索引值
map()  // 对数组中的每一项运行给定函数,返回每次函数调用的结果组成新的数组
reverse()  // 颠倒数组中元素的顺序
slice()  // 传入索引值,将数组对应索引值范围内的元素作为新数组返回  
some()  // 对数组中的每一项运行给定函数,如果某一项返回true,则返回true
sort()  // 按照字母顺序排序,支持传入指定排序方法的函数作为参数
toString()  // 将数组作为字符串返回
valueOf()  // 和toString类似,将数组作为字符串返回

6.ES6数组新增方法

@@iterator  // 返回一个包含数组键值对的迭代器对象,可通过同步调用得到数组元素的键值对
copyWithin()  // 复制数组中一系列元素,到该数组指定的起始位置
entries()  // 返回包含数组所有键值对的@@iterator
includes()  // 数组中存在某个元素则返回true,否则返回false(es7新增)
find()  // 根据回调函数给定的条件从数组中查找元素,如果找到则返回该元素
findIndex()  // 根据回调函数给定的条件从数组中查找元素,如果能找到就返回该元素在数组中的索引
fill()  // 用传入参数填充数组
from()  // 根据已有数组创建一个新数组
keys()  // 返回包含数组所有索引的@@iterator
of()  // 根据传入的参数创建一个新数组
values()  // 返回包含数组中所有值的@@iterator

7.数组优缺点
优点:
(1)按照索引查询元素速度快
(2)按照索引遍历数组方便

缺点:
(1)数组的大小固定后就无法扩容了
(2)数组只能存储一种类型的数据
(3)添加,删除的操作慢,因为要移动其他的元素。

适用场景:
频繁查询,对存储空间要求不大,很少增加和删除的情况。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/101631.html

相关文章

  • CSS技巧 - 收藏集 - 掘金

    摘要:笔者作为一位,将工作以来用到的各种优秀资料神器及框架整理在此,毕竟好记性不如烂键盘,此前端知识点大百科全书前端掘金,,不定期更新技巧前端掘金技巧,偶尔更新。计算数组的极值技巧使你的更加专业前端掘金一个帮你提升技巧的收藏集。 CSS 样式画各种图形 - 前端 - 掘金下面是一些我在 CSS 中经常用到的图案,还有一些是在css-tricks看到的。记录一下,以后会用到。会持续更新… 一、...

    Jonathan Shieber 评论0 收藏0
  • CSS技巧 - 收藏集 - 掘金

    摘要:笔者作为一位,将工作以来用到的各种优秀资料神器及框架整理在此,毕竟好记性不如烂键盘,此前端知识点大百科全书前端掘金,,不定期更新技巧前端掘金技巧,偶尔更新。计算数组的极值技巧使你的更加专业前端掘金一个帮你提升技巧的收藏集。 CSS 样式画各种图形 - 前端 - 掘金下面是一些我在 CSS 中经常用到的图案,还有一些是在css-tricks看到的。记录一下,以后会用到。会持续更新… 一、...

    SHERlocked93 评论0 收藏0
  • 学习JavaScript数据结构算法(三):集合

    摘要:至于这三个的具体概念,可以看图中集合的实现首先,创建一个构造函数。前端路漫漫,且行且歌的前端乐园原文链接寒假前端学习学习数据结构与算法三集合 本系列的第一篇文章: 学习JavaScript数据结构与算法(一),栈与队列第二篇文章:学习JavaScript数据结构与算法(二):链表第三篇文章:学习JavaScript数据结构与算法(三):集合第四篇文章:学习JavaScript数据结构与...

    BDEEFE 评论0 收藏0
  • JavaScript中的算法(附10道面试常见算法题解决方法和思路)

    摘要:中的算法附道面试常见算法题解决方法和思路关注每日一道面试题详解面试过程通常从最初的电话面试开始,然后是现场面试,检查编程技能和文化契合度。值得记住的数组方法有和。一个好的解决方案是使用内置的方法。 JavaScript中的算法(附10道面试常见算法题解决方法和思路) 关注github每日一道面试题详解 Introduction 面试过程通常从最初的电话面试开始,然后是现场面试,检查编程...

    Cruise_Chan 评论0 收藏0
  • Deep in JS - 收藏集 - 掘金

    摘要:今天同学去面试,做了两道面试题全部做错了,发过来给道典型的面试题前端掘金在界中,开发人员的需求量一直居高不下。 排序算法 -- JavaScript 标准参考教程(alpha) - 前端 - 掘金来自《JavaScript 标准参考教程(alpha)》,by 阮一峰 目录 冒泡排序 简介 算法实现 选择排序 简介 算法实现 ... 图例详解那道 setTimeout 与循环闭包的经典面...

    enali 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<