详谈js中数组(array)和对象(object)的区别

yizhihongxing

详谈JS中数组(Array)和对象(Object)的区别

在JS中,数组和对象都是非常常见且重要的数据类型。它们可以用于存储和操作数据,但是它们之间有很大的区别。本攻略将详细讲解JS中数组和对象的区别,包括定义、访问和操作数组和对象。

数组(Array)是什么?

JS中的数组是一种有序、可变的集合,可以存储任意类型的值,包括数字、字符串、对象等。它通过下标来访问和操作其中的元素。

数组的定义

在JS中,定义一个数组可以使用[]new Array()的方法:

// 定义一个空数组
let array1 = [];

// 定义一个长度为3的数组,初始值为undefined
let array2 = new Array(3);

// 定义一个包含3个元素的数组,元素类型为字符串
let array3 = ['apple', 'banana', 'orange'];

数组的访问

数组中的元素可以通过下标来访问。下标从0开始,可以是数字或字符串:

let fruits = ['apple', 'banana', 'orange'];

console.log(fruits[0]); // 'apple'
console.log(fruits['1']); // 'banana'

如果访问的下标超出了数组的界限,会得到undefined:

console.log(fruits[3]); // undefined

数组的操作

JS中的数组支持多种操作,例如添加、删除、修改元素等。以下是几个示例:

let fruits = ['apple', 'banana', 'orange'];

// 向数组最后添加一个元素
fruits.push('pear');

// 删除数组最后一个元素
fruits.pop();

// 向数组开头添加一个元素
fruits.unshift('kiwi');

// 删除数组第一个元素
fruits.shift();

// 修改数组中的元素
fruits[1] = 'mango';

// 获取数组的长度
console.log(fruits.length); // 2

对象(Object)是什么?

JS中的对象是一个无序的集合,由一些属性(key-value)组成,其中属性的值可以是任意类型的。它通过属性名来访问和操作其中的属性。

对象的定义

在JS中,定义一个对象可以使用{}new Object()的方法:

// 定义一个空对象
let object1 = {};

// 定义一个包含两个属性的对象
let object2 = {
  name: '张三',
  age: 20
};

// 定义一个包含一个函数属性的对象
let object3 = {
  sayHi: function() {
    console.log('Hi');
  }
};

对象的访问

对象中的属性可以通过属性名来访问。属性名可以是任何字符串,包括空字符串。

let person = {
  name: '张三',
  age: 20,
  '': '这是一个空字符串属性'
};

console.log(person.name); // '张三'
console.log(person.age); // 20
console.log(person['']); // '这是一个空字符串属性'

如果访问不存在的属性,则会得到undefined:

console.log(person.gender); // undefined

对象的操作

JS中的对象也支持多种操作,例如添加、删除、修改属性等。以下是几个示例:

let person = {
  name: '张三',
  age: 20
};

// 添加一个新属性
person.gender = '男';

// 删除一个属性
delete person.age;

// 修改一个属性的值
person.name = '李四';

// 获取对象中所有的属性名
console.log(Object.keys(person)); // ['name', 'gender']

数组和对象的区别

根据上述内容,我们可以总结出以下几点JS中数组和对象的区别:

  1. 数组中的元素是有序的,对象中的属性是无序的;
  2. 数组中的元素可以通过下标来访问,对象的属性可以通过属性名来访问;
  3. 数组中的元素类型可以不同,对象中的属性名必须是字符串类型,但属性值可以是任意类型;
  4. 操作数组时,通常使用数组的方法;操作对象时,通常使用对象的方法。

示例说明

示例1

let fruits = ['apple', 'banana', 'orange'];

console.log(fruits[1]); // 'banana'
console.log(fruits.length); // 3

fruits.splice(1, 1, 'kiwi', 'mango');

console.log(fruits); // ['apple', 'kiwi', 'mango', 'orange']
console.log(fruits.length); // 4

在上面的示例中,我们定义了一个包含3个字符串元素的数组fruits。通过[]操作符访问其第二个元素(下标为1),并输出结果。然后使用splice方法,将数组中从第二个元素开始的1个元素替换为kiwimango。最后输出修改后的数组和数组的长度。

示例2

let person = {
  name: '张三',
  age: 20,
  gender: '男'
};

console.log(person.name); // '张三'
console.log(person.age); // 20

delete person.age;

console.log(person); // { name: '张三', gender: '男' }
console.log(Object.keys(person)); // ['name', 'gender']

在这个示例中,我们定义了一个包含3个属性的对象person。通过.操作符和[]操作符访问其nameage属性,并输出结果。然后使用delete操作符删除了age属性,再输出对象和对象中所有属性名。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详谈js中数组(array)和对象(object)的区别 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • ion content 滚动到底部会遮住一部分视图的快速解决方法

    当使用ionic开发应用时,有时会遇到一个问题:在使用ion-content组件时,在底部出现的内容可能会被底部导航栏或者浏览器的地址栏所遮挡。这个问题可能会影响应用的用户体验,因此需要进行修复。下面是解决这个问题的一些方法。 方法一:增加scroll-padding-bottom 通过为ion-content添加scroll-padding-bottom属…

    JavaScript 2023年6月11日
    00
  • JS 数组随机洗牌的实例代码

    让我来详细讲解一下“JS 数组随机洗牌的实例代码”的完整攻略。 什么是数组随机洗牌 数组随机洗牌是指将一个数组中的元素随机打乱顺序的过程。通常用于游戏场景、抽奖等场景。 实现数组随机洗牌的步骤 下面是一份 JS 数组随机洗牌的实例代码,接下来我会详细讲解它: function shuffle(arr) { var len = arr.length; for(…

    JavaScript 2023年5月27日
    00
  • JS冷知识之不起眼但有用的String.raw方法

    下面是关于JS中String.raw方法的详细讲解。 String.raw方法是什么 String.raw 是一个 ES6 引入的模板字符串的标签函数(tagged template)。当标签函数使用在模板字符串上时,该模板字符串中所有的转义字符都不会被转义,而是作为字符串的普通字符被输出。 用法示例 下面我们通过两个实际的示例来说明 String.raw …

    JavaScript 2023年5月28日
    00
  • JS 作用域与作用域链详解

    当我们使用 JavaScript 编写代码时,经常会遇到变量作用域的问题,这个时候就需要了解 JavaScript 的作用域与作用域链。了解 JavaScript 的作用域与作用域链,可以帮助我们更好地理解 JavaScript 代码运行的流程,从而提高编程效率和代码质量。 一、作用域 1.1 什么是作用域 作用域是指变量和函数的可访问范围。JavaScri…

    JavaScript 2023年6月10日
    00
  • 利用js动态添加删除table行的示例代码

    当需要在网页中展示和处理数据时,使用table是一种非常常见的方式。在一些场景下,需要动态地添加或删除表格行,这就需要使用JavaScript进行操作。下面是一份利用js动态添加删除table行的示例代码攻略。 1. HTML结构 首先,我们需要在HTML中定义一个table,标记好每一列的thead和tbody,并预留出一行作为模板行。 <table…

    JavaScript 2023年6月11日
    00
  • 小程序页面间传参的五种方式实例详解

    下面就为你详细讲解“小程序页面间传参的五种方式实例详解”的完整攻略。 一、背景 小程序开发中,需要在不同页面间传递参数,以便实现不同页面间的数据交互,并在目标页面中通过这些参数做出相应的操作。下面,我们就来看一下小程序页面间传参的五种方式实例详解。 二、方式一:query参数传递 query参数传递是小程序页面间传参数最常用的方式。通过传递query参数,目…

    JavaScript 2023年6月11日
    00
  • vue elementui 实现搜索栏公共组件封装的实例代码

    下面我将为你讲解”vue elementui 实现搜索栏公共组件封装的实例代码”的完整攻略。 一、需求分析 在实现搜索栏公共组件封装之前,我们需要先确定组件的需求,包括: 搜索栏包含的输入字段类型(文本输入、下拉框选择等); 搜索栏提交查询的方式(点击查询按钮、按下Enter键等); 查询参数的名称和格式; 查询结果的展示方式。 例如我们可以将搜索栏中的输入…

    JavaScript 2023年6月10日
    00
  • axios拦截器、ElementUI组件的使用方法

    axios拦截器使用方法 1. 安装Axios Axios是一个基于Promise的HTTP库,可以在浏览器和Node.js中使用。安装Axios,请在命令行输入以下命令: npm install axios 2. 添加拦截器 可以使用Axios的拦截器来在请求或响应被处理前拦截它们。 以下是一个示例,向请求头中添加Authorization: import…

    JavaScript 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部