JavaScript Map对象

map对象存有键值对,其中的键可以是任何数据类型

map对象记得键的原始插入顺序。

map对象具有表示映射大小的属性

Map()方法

Method

Description

new Map()

创建新的Map对象

set()

为Map对象中的键设置值

get()

获取Map对象中键的值

entires()

返回Map对象中键/值对的数组

keys()

返回Map对象中键的数组

values()

返回Map对象中值的数组

Map()属性

size

获取Map对象中某键的值

创建Map对象

能够使用对象作为键是Map的一个重要特性

<!--
* @Author: RealRoad
* @Date: 2023-03-15 10:14:44
* @LastEditors: Mei
* @LastEditTime: 2023-03-15 10:20:49
* @FilePath: \vscode\map.html
* @Description:
*
* Copyright (c) 2023 by ${git_name_email}, All Rights Reserved.
-->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
const apples={name:"Apples"}
const bananas={name:"Bananas"}
const oranges={name:"Oranges"}

const fruits=new Map()
fruits.set(apples,500)
fruits.set(bananas,400)
fruits.set(oranges,300)
console.log(fruits)

fruits.get(bananas)
console.log(fruits.get(bananas))
console.log(fruits.get("bananas"))
</script>
</body>
</html>

JavaScript学习笔记(9.0)_学习

 通过get()方法可以获取Map中键的值。

注意:键是一个对象(object),不是一个字符串(string)

//获取Map中元素的数量
console.log(fruits.size)

//删除Map元素
console.log(fruits.delete(apples))
console.log(fruits)
//删除所有元素
console.log(fruits.clear())
console.log(fruits)
//查看Map中是否存在键
console.log(fruits.has(bananas))

JavaScript学习笔记(9.0)_数组_02

 JavaScript对象与Map的差异

对象

Map

Size

对象没有size属性

Maps由size属性

键类型

对象键必须是字符串(或符号)

Map键可以是任何数据类型

键顺序

对象键没有很好的排序

Map键按插入排序

默认

对象有默认键

Map没有默认键

JavaScript对象定义

在JavaScript中,几乎“所有事物”都是对象。

布尔是对象(如果用new关键字定义)

数字是对象(如果用new关键字定义)

字符串是对象(如果用new关键字定义)

日期永远都是对象

算数永远都是对象

正则表达式永远都是对象

数组永远都是对象

函数永远都是对象

对象永远都是对象

所有JavaScript值,除了原始值,都是对象。

JavaScript原始值

原始值指的是没有属性或方法的值。

原始数据类型指的是拥有原始值的数据

JavaScript定义了5中原始数据类型:

string(例如:"hello")、number(例如:3.2555)、Boolean(例如:TRUE)、null、undefined

原始值是一成不变的(他们是硬编码的,因此不能改变)

假设x=3.14,您能够改变x的值。但是您无法改变3.14的值。

对象是包含变量的变量

JavaScript变量能够包含单个的值

var person:"mez"

对象也是变量。但是对象能够包含很多值。

值按照名称:值对的形式编写(名称和值以冒号分割)

JavaScript对象是命名值的集合。

创建JavaScript对象

(1)定义个创建单个对象,使用对象文字。

(2)定义和创建单个对象,通过关键字new

(3)定义对象构造器,然后创建构造类型的对象

//(1)
var person = {firstName:"Bill", lastName:"Gates", age:62, eyeColor:"blue"};

// 显示对象中的数据:
document.getElementById("demo").innerHTML =
person.firstName + " 已经 " + person.age + " 岁了。";
//(2)
var person = new Object();
person.firstName = "Bill";
person.lastName = "Gates";
person.age = 50;
person.eyeColor = "blue";

JavaScript对象是易变的:他们通过引用来寻址,而非值。

如果person是一个对象,下面的语句不会创建person的副本:

var x = person;  // 这不会创建 person 的副本。

对象x并非person的副本。它就是person。x和person是同一个对象。

对x的任何改变都将改变person,因为x和person是相同的对象。

var person = {firstName:"Bill", lastName:"Gates", age:62, eyeColor:"blue"}

var x = person;
x.age = 10; // 这将同时改变 both x.age 和 person.age

注意:JavaScript变量不是易变的。只有JavaScript对象如此。