JavaScript数据结构与算法整理------数组

这篇具有很好参考价值的文章主要介绍了JavaScript数据结构与算法整理------数组。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、数组的定义

        数组的标准定义:一个存储元素的线性集合,元素可以通过索引来任意存取,索引通常是数字,用来计算元素之间存储位置的偏移量,几乎所有的编程语言都有类似的数据结构,而JavaScript的数组略有不同。

        JavaScript中的数组是一种特殊的对象,用来表示偏移量的索引是该对象的属性,索引可能是整数。然而,这些数字索引在内部转换为字符串类型,这是因为JavaScript对象中的内部属性必须是字符串。数组在JavaScript中只是一个特殊的对象,所以效率不如其他语言效率高。

       JavaScript中的数组,严格来说应该称作对象,是特殊的JavaScript对象,在内部归类为数组。由于Array在JavaScript中被当为对象,因此他有很多属性和方法可以在编程中使用。

二、数组的使用

    1. 创建数组

          最简单的方式就是 []操作符来声明一个数组变量

var nums = []
print(numbers.length); // 显示 0
---------分割线------------
var nums = [1,2,3,4,5]
print(numbers.length); // 显示 5

          还可以调用Array的构造函数来创建一个数组

var nums = new Array()
print(numbers.length); // 显示 0

--------------分割线------------------

var nums = new Array(1,2,3,4,5)
print(numbers.length); // 显示 5


         而且 数组中的元素不必是同一种数据类型

var nums = [1,'a','b',2,4]

         可以使用Array.isArray()判断是否是数组

let n = 1
let nums = [1,2,'a','b']

pint(Array.isArray(n)) // false
pint(Array.isArray(nums)) // true

        大多数数JavaScript专家推荐 [ ]

操作符 来创建数组 因为效率更高

 2.读写数组

      在一条赋值语句中可以使用  [ ] 操作符将数据赋值给数组,比如将 1-100赋值给数组:

var nums = []

 for(let i=0,i<100,i++){
     nums[i] = i + 1
 }

     还可以用 [ ] 操作符进行读取数组的中元素

var nums =[5,4,3,2,1];
vat sum = nums[0]+nums[1]+nums[2]+nums[3]+nums[4];
pint(sum)  // 15

    JavaScript中 数组也是对象,数组的长度可以是任意长度,超出其创建时的指定长度。length属性反映的是当前数组元素的个数,使用它可以确保循环遍历了数组中的所有的元素。

3. 由字符串生成素组

  调用字符串对象的方法 split()方法可以生成数组,

var str = 'zhong guo hong shi zui mei de yan se'

var arr =  str.split(" ") // 以空格分隔

log(arr) // ['zhong','guo','hong','shi','zui'.'mei','de','yan','se']
 

4. 对数组的整体性操作

     浅拷贝:把一个数组赋给另外一个数组,只是为被赋值的数组添加了一个新的引用,当你通过原引用修改了数组的值,那么另一个引用数组也会变化:

var nums = [1,2,3,4,5]

var samenums = nums

nums[0] = 6

pint(samenums[0]) // 6

深拷贝:将数组中的元素都复制一份到新数组中:

function copy(arr1,arr2){
   for(var i =0;i< arr1.length; i++){
       arr2[i] = arr1[i]
   }
}

var nums = [1,2,3,4,5,6] 
var sameNums = [];

copy(nums,sameNums);

nums[0] = 9;

pint(sameNums[0])  // 1

三.存取函数

1.查找元素 

  indexOf() 是最常用的存取函数之一,用来查找传进来的参数在数组中是否存在,如果存在 返回索引,如果不存在就返回 -1

var nums = [1,2,3,4,'a',5]

var n = nums.indexOf('a')
pint(n) // 4
var n = nums.indexOf('b')
pint(n) // -1

如果数组中有多个相同的元素,那么indexOf() 就会返回第一个元素的索引,

lastIndexOf()  正好相反 ,如果有多个相同元素,就会返回最后一个元素的索引;

2.数组的字符串表示

 有两个方法可以将数组转为字符串: join()和toString(),这个两个方法都会返回数组的所有元素的字符串,各个元素之间以逗号隔开。

3.由已有数组创建新的数组文章来源地址https://www.toymoban.com/news/detail-423843.html

       concat() splice() 方法允许通过已有数组创建新数组。
        concat()  方法可以合并多个数组创建一个新数组;
       splice() 方法截取一个数组的子集创建一个新数组;

到了这里,关于JavaScript数据结构与算法整理------数组的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 【算法 & 高级数据结构】树状数组:一种高效的数据结构(一)

    【算法 & 高级数据结构】树状数组:一种高效的数据结构(一)

    🚀 个人主页 :为梦而生~ 关注我一起学习吧! 💡 专栏 :算法题、 基础算法~赶紧来学算法吧 💡 往期推荐 : 【算法基础 数学】快速幂求逆元(逆元、扩展欧几里得定理、小费马定理) 【算法基础】深搜 树状数组 (Binary Indexed Tree,BIT)是一种数据结构,用于高效地处理

    2024年03月11日
    浏览(18)
  • 【算法 & 高级数据结构】树状数组:一种高效的数据结构(二)

    【算法 & 高级数据结构】树状数组:一种高效的数据结构(二)

    🚀 个人主页 :为梦而生~ 关注我一起学习吧! 💡 专栏 :算法题、 基础算法、数据结构~赶紧来学算法吧 💡 往期推荐 : 【算法基础 数学】快速幂求逆元(逆元、扩展欧几里得定理、小费马定理) 【算法基础】深搜 数据结构各内部排序算法总结对比及动图演示(插入排序

    2024年03月26日
    浏览(11)
  • 数据结构与算法 | 数组(Array)

    数据结构与算法 | 数组(Array)

    数组(Array)应该是最基础的数据结构之一,它由相同类型的元素组成的集合,并按照一定的顺序存储在内存中。每个元素都有一个唯一的索引,可以用于访问该元素。 数组索引(Index): 数组中的每个元素都有一个唯一的整数索引,从0开始计数。索引用于访问数组中的元素

    2024年02月08日
    浏览(18)
  • 数据结构与算法(一): 稀疏数组

    数据结构与算法(一): 稀疏数组

    在五子棋游戏或类似的游戏中,我们可以把整个棋盘想象成是一个有规律的二维数组,其值由0、1、2三个数字组成,0代表空白区域,1代表白子,2代表黑子。这种情况:即当一个数组中大部分元素为0或者为同一值时,存储该数组数据可以使用稀疏数组来对原始数组进行精简,

    2024年02月11日
    浏览(15)
  • 数据结构与算法--javascript(持续更新中...)

    数据结构与算法--javascript(持续更新中...)

    1. 数据结构 队列: 一种遵循 先进先出 (FIFO / First In First Out) 原则的一组有序的项;队列在尾部添加新元素,并从头部移除元素。最新添加的元素必须排在队列的末尾。 (例如:去食堂排队打饭,排在前面的人先打到饭,先离开;排在后面的人后打到饭,后离开。) 栈: 一

    2024年02月16日
    浏览(9)
  • 【数据结构和算法】寻找数组的中心下标

    【数据结构和算法】寻找数组的中心下标

    Java基础合集 数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 其他系列文章导航 文章目录 前言 一、题目描述 二、题解 2.1 前缀和的解题模板 2.1.1 最长递增子序列长度 2.1.2 寻找数组中第 k 大的元素 2.1.3 最长公共子序列长度 2.1.4 寻找数组中第 k 小的元素 2

    2024年02月04日
    浏览(12)
  • 数据结构与算法-数组(附阿里面试题)

            给你一个文件里面包含全国人民(14亿)的年龄数据(0~180),现在要你统计每一个年龄   有多少人?          给定机器为 单台+2CPU+2G内存。不得使用现成的容器,比如map等。 (这一句可以忽略)         在以上情况下你该如何以最高效的方法来解决这个

    2024年02月13日
    浏览(10)
  • 【数据结构和算法】使用数组的结构实现链表(单向或双向)

    【数据结构和算法】使用数组的结构实现链表(单向或双向)

    上文我们通过结构体的结构实现了队列 、以及循环队列的实现,我们或许在其他老师的教学中,只学到了用结构体的形式来实现链表、队列、栈等数据结构,本文我想告诉你的是,我们 可以使用数组的结构实现链表、单调栈、单调队列 目录 前言 一、用数组结构的好处 1.数

    2024年01月20日
    浏览(44)
  • 数据结构与算法之排序: 计数排序 (Javascript版)

    排序 排序:把某个乱序的数组变成升序或降序的数组 (这里用数组来做举例) 计数排序 核心思想 :通过计数而非比较来进行排序,借助数组下标本身就是有序的原理实现 适用范围:较小的非负整数序列和最小值和最大值之间的数字范围比较合适 基数排序需要新增一个计数数

    2024年02月06日
    浏览(13)
  • 数据结构与算法之查找: 顺序查找 (Javascript版)

    顺序查找 思路 遍历数组 找到跟目标值相等元素,就返回它的下标 没有找到,返回-1 算法实现 总结 非常低效,算是入门搜索 时间复杂度:O(n) 对于数组结构或链表结构而言,没什么太多可说的

    2024年02月05日
    浏览(17)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包