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

详谈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日

相关文章

  • 完美解决AJAX跨域问题

    下面是完美解决AJAX跨域问题的完整攻略。 背景介绍 在进行AJAX请求时,如果请求的URL地址跟当前页面的域不同,就会遇到跨域问题。因为浏览器会默认启用同源策略(Same Origin Policy),防止网站被其他域名下的脚本攻击。但是,有时候我们需要访问其他域名下的API,就需要解决跨域问题。 解决方案 1. JSONP JSONP是一种跨域请求数据的…

    JavaScript 2023年6月11日
    00
  • 原生JS实现图片无缝滚动方法(附带封装的运动框架)

    下面是对“原生JS实现图片无缝滚动方法(附带封装的运动框架)”的完整攻略。 1. 实现图片无缝滚动的基本思路 实现图片无缝滚动,是需要对图片进行滚动并将其无限循环的。具体的实现思路如下: 创建一个容器,设置其宽度为图片的总宽度。 手动复制一份图片,将其添加到容器的最后。 定时器每次移动容器的left值,实现滚动效果。 当容器的left值达到任何一张图片的边界…

    JavaScript 2023年6月11日
    00
  • BOM中location对象的属性和方法

    BOM中的location对象表示当前窗口的URL位置,并且可以用它来操作浏览器的历史记录。下面是location对象的属性和方法: location属性 location.href 用于读取或设置当前窗口的URL。如下所示: // 获取当前窗口的URL const currentUrl = location.href; console.log(curren…

    JavaScript 2023年6月11日
    00
  • JQuery将字符串转为json对象的四种方法

    下面是详细的讲解: 背景 在开发过程中,我们经常需要将字符串转换成 JSON 对象,然后进行操作。而 JQuery 提供了四种方法来完成这项任务。下面我们逐一来了解这四种方法。 方法一:$.parseJSON() 这是最常用的方法,直接调用这个方法即可将字符串转换为 JSON 对象。 var str = ‘{"name": "张…

    JavaScript 2023年5月27日
    00
  • 使用JavaScript开发IE浏览器本地插件实例

    使用JavaScript开发IE浏览器本地插件涉及以下步骤: 1. 编写插件代码: 插件需要用 C++ 编写,但可以使用 JavaScript 驱动其行为。首先需要创建一个 ActiveX 控件,然后在控件中嵌入 IE 的 COM 组件。 2. 部署插件代码: 将插件代码打包成 CAB 文件,然后将 CAB 文件嵌入网页中。这样每次访问该网页时,IE 浏览器…

    JavaScript 2023年5月27日
    00
  • JavaScript 面向对象与原型

    JavaScript 面向对象与原型 什么是面向对象? 面向对象编程(Object-oriented programming, OOP)是一种编程模式,它以“对象”作为程序的基本单元,通过对象之间的交互实现程序功能。面向对象编程思想中,将程序拆分成若干个模块,每个模块相当于一个对象,包含自身属性和方法。 JavaScript作为一门面向对象的语言,与其他语言…

    JavaScript 2023年5月27日
    00
  • jacascript DOM节点——元素节点、属性节点、文本节点

    JavaScript DOM节点是文档对象模型(DOM)中的基本要素之一,它们可以作为网页中的任意元素的表示。DOM节点可以分为三种主要类型:元素节点、属性节点、文本节点。本文将详细讲解这三种节点类型的定义、区别以及使用方法。 元素节点 元素节点是DOM树结构中的基本节点,它表示HTML文档中的元素。可以通过document.getElementByTagN…

    JavaScript 2023年6月10日
    00
  • 深入理解JavaScript系列(21):S.O.L.I.D五大原则之接口隔离原则ISP详解

    让我来详细讲解一下“深入理解JavaScript系列(21):S.O.L.I.D五大原则之接口隔离原则ISP详解”的攻略。 1. 什么是接口隔离原则(ISP) 接口隔离原则(Interface Segregation Principle,简称ISP),是S.O.L.I.D设计原则中的第四个原则。它指出“客户端不应该依赖于它不需要的接口”。简单来说,一个类应该…

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