js之数组,对象,类数组对象

博客zhu虎康 2022-08-19 08:52:24
加精

数组,对象和类数组对象

目录

  • 数组,对象和类数组对象
  • 一、数组
  • 二、对象
  • 三、数组与对象
  • 1、相同
  • 2、不同
  • 四、类数组对象

一、数组

数组定义:一组有序的数据集合,其索引从0开始且自然增长的整数,其元素值可以是任何js数据!并且包含一个名为length的属性,该属性表示数组元素的个数!

var array = [1,2,3];
console.log(array[0])//1
​console.log(array[1])//2
​console.log(array[2])//3
​console.log(array['length'])//3

  

从上面的例子我们可以看到,在声明数组时,我们只是显式的声明了数组元素的值,并没有显式的给这些值定义索引和length属性,但是在数组定义好后我们发现就可以直接使用数组的索引值来操作数组的元素了,从这不难看出,数组元素的索引和length属性是在数组定义时根据数组元素语言自动就帮你定义好了!而且很容易就能看出来,索引值是从0开始并且自然递增的!

二、对象

对象定义:一组无序的由键->值组成的数据集合,其元素的键名和值都可以自定义。

var object = {'a': 1, 'b': 2}
console.log(object['a'])//1
console.log(object['b'])//2
console.log(object['length'])//undefined

  

从上面的例子简单来看,对象自身所拥有的(不包括继承来的)任何属性都是由用户自定义的!

三、数组与对象

数组和对象在某些地方或时候其实是很相像的!

1、相同

我们先看看他们相同的部分,首先我们可以把数组的索引值看成的元素的键名,元素看成是值,那么数组是不是也变成了键->值构成的了!

2、不同

我们在来看看他们不一样的地方,数组的索引值始终的从0开始递增的数字,对象的属性值可以是任何自定义的字符串,并且数组包含一个length属性,而对象自身所拥有的(不包括继承来的)任何属性都是有用户自定义的!也就是说我们可以显式的给对象定义length属性!

var arr = [1,2,3];
var obj = {0: 1, 1: 2, 2: 3, length: 3};
console.log(arr[0], obj[0])//1, 1
console.log(arr['length'], obj['length'])//1, 1

  

通过对比,我们发现完全可以使用对象来模拟数组,只要我们定义的对象的每个元素的键名都使用数字并且让其保持递增,且动态的定义一个length属性来表示元素个数,那么从效果上来说,基本就个数组相同了!这就是我们要说的:

四、类数组对象

  • 类数组对象:只包含使用从零开始,且自然递增的整数做键名,并且定义了length表示元素个数的对象,我们就认为它是类数组对象!

类数组对象不仅是效果上跟数组相似,并且在某些操作上也相同:

//定义数组和类数组对象
var arr = [1,2,3];
var obj = {0: 1, 1: 2, 2: 3, length: 3};
//元素读写操作
console.log(arr[0], obj[0])//1, 1
console.log(arr['length'], obj['length'])//3, 3
arr[0] = 9;
obj[0] = 9;
console.log(arr[0],obj[0]); // 9,9
 
//遍历
for(var i = 0, len = arr.length; i < len; i++) {
    arr[i]....
}
for(var i = 0, len = obj.length; i < len; i++) {
    obj[i]....
}

  

通过代码,我们看到,不仅在读写等操作上类数组对象和数组相似,并且在遍历元素上都可以使用for循环进行遍历!

==总结:我们可以从数据结构上把js的数组归为对象,因为我们可以使用对象来模拟数组,当然这里仅仅说的是数据结构上,其实他们本身所继承来的方法和一些属性是不同的!在平常的理解中可以把数组看成是特殊的对象,方便理解==!

...全文
24 回复 打赏 收藏 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
代码转载自:https://pan.quark.cn/s/c50a500cf555 在当今全球经济迅猛增长的背景下,通讯技术的持续进步使得个人之间的联系日益紧密,因此个人对其联系人信息的有效管理变得尤为重要。在此需求下,通讯录应运而生,各式各样的通讯录应用正不断为人们的生活带来便利。通讯录管理软件主要用于处理日常生活中的同学、朋友等联系人的信息编辑,帮助用户随时获取所需联系人的全部资料。这款通讯录管理系统操作简便,用户能够通过该系统轻松完成添加、检索、更新、移除等基本的管理任务。软件的操作界面通常可以隐藏在屏幕的边缘区域,当用户的鼠标移至该区域时,操作界面会自动显现,用户仅需输入关键词(如联系人姓名)即可快速找到所需的通讯录数据。 【Java课程设计-通讯录系统】是一款基于Java编程语言开发的个人通讯录管理工具,其目的是协助用户高效地处理和查找联系人信息。该系统是在JDK 1.7.0和NetBeans 6.9.1集成开发环境中构建的,提供了添加、检索、修改和删除联系人等核心功能,旨在为用户提供流畅的操作体验。 ### 一、需求分析 1. **基本功能**:系统需具备存储联系人姓名、电话、电子邮箱等核心数据的能力,并支持用户执行新增联系人、查找特定联系人、编辑现有联系人资料以及移除无用联系人等操作。 2. **搜索功能**:用户通过输入联系人姓名的关键字,系统能迅速定位到对应的联系人记录。 3. **界面友好**:界面设计需简洁明了,操作直观易用,软件窗口支持隐藏于屏幕边缘,并在鼠标接近时自动展示。 4. **数据保存**:系统必须实现联系人数据的持久化存储,确保程序关闭后数据不会丢失。 ### 二、任务分析 1. **主界面设计**:开发一个用户友好的主界...

31,479

社区成员

发帖
与我相关
我的任务
社区描述
鸿蒙Next技术问题交流和学习资源共享中心
vue.js前端harmonyos 个人社区
社区管理员
  • 言程序plus
  • 小明-JavaAI
  • 叶落秋白
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

web全栈技术交流中心

试试用AI创作助手写篇文章吧