javaScript 基础知识汇总(八)
1、Map Set WeakMap 和WeakSet
Map
是一个键值对的集合,主要的方法包括:
new Map() 创建Map
map.set(key,value) 根据键(key)存储值(value).
map.get(key) 根据键返回值,如果map中该值不存在,返回undefined
map.has(key) 如果键值存在,返回true,否则返回false
map.delete(key) 移除该键的值
map.clear() 清空map
map.size 返回当前元素个数
let map = new Map(); map.set('', 'str1'); // 字符串作为 key
map.set(, 'num1'); // 数字作为 key
map.set(true, 'bool1'); // 布尔值作为 key // 还记得普通对象 Object 吗?它将会把所有的键转化为字符串类型
// 但是 Map 将会保留键的类型,所以下面这两个是不同的:
alert( map.get() ); // 'num1'
alert( map.get('') ); // 'str1' alert( map.size ); //
将Object转化为Map
通过一个方法Object,entries(obj),它可以返回一个对象的键值对数组,如下
let map = new Map(Object.entries({
name: "John",
age:
}));
遍历Map
let recipeMap = new Map([
['cucumber', ],
['tomatoes', ],
['onion', ]
]); // 迭代键(vegetables)
for (let vegetable of recipeMap.keys()) {
alert(vegetable); // cucumber, tomatoes, onion
} // 迭代值(amounts)
for (let amount of recipeMap.values()) {
alert(amount); // 500, 350, 50
} // 迭代键值对 [key, value]
for (let entry of recipeMap) { // 和 recipeMap.entries() 一样
alert(entry); // cucumber,500(等等)
}
recipeMap.
forEach
(
(
value
,
key,
map)
=>
{
alert
(
`
${
key}
:
${
value}
`
)
;
// cucumber: 500 等等
}
)
;
Set
Set 是一个值得集合,这个集合中的所有的值仅出现一次
主要方法包括:
new Set() 创建Set,利用数组创建是可选的(任何迭代对象都可以)
set.add(value) 添加值,返回set本身
set.delete(value) 删除值,如果该value在调用方法的时候存在则返回true,否则返回false。
set.has(value) 如果set中存在该值则返回true,否则返回false。
set.clear() 清空set
set.size 元素的个数
Set 迭代
for ... of 或者 forEach
let set = new Set(["oranges", "apples", "bananas"]); for (let value of set) alert(value); // 和 forEach 相同:
set.forEach((value, valueAgain, set) => {
alert(value);
});
WeakMap 和 WeakSet
WeakMap
仅有如下方法:
weakMap.get(key)
weakMap.set(key, value)
weakMap.delete(key, value)
weakMap.has(key)
WeakSet同理
这两者的键必须是对象
let weakMap = new WeakMap(); let obj = {}; weakMap.set(obj, "ok"); // 运行正常(对象作为键) weakMap.set("test", "Whoops"); // 错误,因为“test”是原始类型
2、Json 方法
Json.stringify 将对象转换为json 完整语法:let
json =
JSON
.
stringify
(
value[
,
replacer,
space]
)
Json.parse 将Json 转换为对象 语法:let
value =
JSON
.
parse
(
str[
,
reviver]
)
;
let student = {
name: 'John',
age: ,
isAdmin: false,
courses: ['html', 'css', 'js'],
wife: null
}; let json = JSON.stringify(student); alert(typeof json); // we've got a string! alert(json);
/* JSON-encoded object:
{
"name": "John",
"age": 30,
"isAdmin": false,
"courses": ["html", "css", "js"],
"wife": null
}
*/
// a number in JSON is just a number
alert( JSON.stringify() ) // 1 // a string in JSON is still a string, but double-quoted
alert( JSON.stringify('test') ) // "test" alert( JSON.stringify(true) ); // true alert( JSON.stringify([, , ]) ); // [1,2,3]
// stringified array
let numbers = "[0, 1, 2, 3]"; numbers = JSON.parse(numbers); alert( numbers[] ); //
let user = '{ "name": "John", "age": 35, "isAdmin": false, "friends": [0,1,2,3] }'; user = JSON.parse(user); alert( user.friends[] ); //
javaScript 基础知识汇总(八)的更多相关文章
- JavaScript基础知识汇总
1. 图片热区: <img src="logo.jpg" usemap="#logo"> <map id="logo" n ...
- javaScript 基础知识汇总(三)
1.循环:while 和 for while 循环 while(condition){ //代码 循环体 } do ... while 循环 let i =0; do { //循环体 }while( ...
- javascript基础知识 (八) BOM学习笔记
一.什么是BOM BOM(Browser Object Model)即浏览器对象模型. BOM提供了独立于内容 而与浏览器窗口进行交互的对象: 由于BOM主要用于管理窗口 ...
- javaScript 基础知识汇总(六)
1.基本类型与对象的区别 基本类型:是原始类型的中的一种值. 在JavaScript中有6中基本类型:string number boolean symbol null undefined 对 ...
- javaScript 基础知识汇总(五)
1.垃圾回收 JavaScript 的内存管理是自动的,不能强制执行或者阻止执行 可达性 JavaScript中主要的内存管理概念是可达性. 什么是可达性? 定义一个对象 let user = { n ...
- javaScript 基础知识汇总(二)
1.运算符 术语或者叫法:一元运算符.二元运算符.运算元(参数) let x=0; x=5+2; //5和2为运算元,“+” 为二元运算符: x=-x; //"-" 为一元运算符 ...
- javascript 基础知识汇总(一)
1.<script> 标签 1) 可以通过<script> 标签将javaScript 代码添加到页面中 (type 和language 属性不是必须的) 2)外部的脚本可以通 ...
- JavaScript 基础知识汇总目录
一.标签.代码结构.现代模式.变量.数据类型.类型转换 GO 二.运算符.值的比较.交互.条件运算符.逻辑运算符 GO 三.循环 while 和 for .switch语句.函数.函数表达式和箭头函数 ...
- javaScript 基础知识汇总 (十三)
1.Class 在JavaScript中 calss即类是一种函数 基本语法 class Myclass{ constructor(){} method1(){} method2(){} method ...
随机推荐
- 转: zabbix3.2.1安装graphtrees插件
转自 : http://blog.csdn.net/liang_baikai/article/details/53542317 graphtree介绍 由于zabbix的图像显示一块不太友好,图像没法 ...
- openpyxl操作excel表格
1.openpyxl 只支持打开.xlsx格式,其他excel类库基本也是 2.不能这里的工作面板直接右键新建表格,必须到文件夹下面去新建,可以把在别的目录新建的表格直接复制到当前目录下 3.从表格中 ...
- 华为VS小米 营销手段有待继续强化
营销手段有待继续强化" title="华为VS小米 营销手段有待继续强化"> 对于大多数来说,希望看到强者愈强的戏码.比如:NBA里的N场连胜.苹果帝国千秋万载一统 ...
- js 实现排序算法 -- 选择排序(Selection Sort)
原文: 十大经典排序算法(动图演示) 选择排序(Selection Sort) 选择排序(Selection-sort)是一种简单直观的排序算法.它的工作原理:首先在未排序序列中找到最小(大)元素,存 ...
- linux find命令格式及find命令详解
本文详细介绍了linux find命令格式及find命令案例,希望对您的学习有所帮助.1.find命令的一般形式为:find pathname -options [-print -exec -ok . ...
- string类应用举例
* Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.cpp * 作者:常轩 * 微信公众号:Worldhello ...
- 探究Java中的引用
探究Java中的四种引用 从JDK1.2版本开始,Java把对象的引用分为四种级别,从而使程序能更加灵活的控制对象的生命周期.这四种级别由高到低依次为:强引用.软引用.弱引用和虚引用.本篇就来详细探究 ...
- 优秀的Spring Cloud开源项目整理推荐
无论是对于初学者,还是有一定工作经验的程序员来讲,Spring Cloud开源项目都是一笔宝贵的财富.下面给大家整理了十个优秀的开源项目,分别是spring-cloud-examples.spaasc ...
- python 软件目录规范
软件目录结构规范 软件开发规范 一.为什么要设计好目录结构? 1.可读性高: 不熟悉这个项目的代码的人,一眼就能看懂目录结构,知道程序启动脚本是哪个,测试目录在哪儿,配置文件在哪儿等等.从而非常快 ...
- How to solve the problem that Github can't visit in China?
find path C:\Windows\System32\drivers\etc\host open DNS detection and DNS query-Webmaster(DNS查询) too ...