【JavaScript】听课笔记2:Set\Map\字符串

set的用法

  • 自动去掉重复元素,无序

创建:

const p = new Set([  //Set大写,多个词要加括号
 'Pasta',
  'Pizza',
  'Pizza',
  'Risotto',
  'Pasta',
  'Pizza',
]);

常见函数

  • p.size; //返回set大小
  • p.has(); //返回是否存在传入的元素,bool值
  • p.add();
  • p.delete();
  • p.clear(); //清除全部

巧用:
去除数组的重复元素,再放入新数组:
const staff = ['Waiter', 'Chef', 'Waiter', 'Manager', 'Chef', 'Waiter'];
const staffUnique = [...new Set(staff)];
console.log(staffUnique);

Map

创建

const rest = new Map();
rest.set('name', 'Classico Italiano'); //set向map插入元素
rest.set(1, 'Firenze, Italy');
console.log(rest.set(2, 'Lisbon, Portugal'));

rest
  .set('categories', ['Italian', 'Pizzeria', 'Vegetarian', 'Organic'])
  .set('open', 11)
  .set('close', 23)
  .set(true, 'We are open :D')
  .set(false, 'We are closed :(');//set可连续调用

常用方法

  • rest.set(a, b);//可传入数组、对象(特别是dom对象)、布尔值、数字等作为key,例:
const arr = [1, 2];
rest.set(arr, 'Test');
rest.set(document.querySelector('h1'), 'Heading');
console.log(rest.get(arr));
  • rest.delet();
  • rest.get(); // 传入key得value
  • rest.has(); //是否存在
  • rest.size;
  • rst.clear();
  • 对象转Map:利用object.entries方法:
    const hoursMap = new Map( Object.entries(openingHours) );
  • for-of循环遍历Map:for (const [key, value] of question) {}

几种数据结构的对比

在这里插入图片描述

原型数据结构与(高级数据结构?忘记原表述了 ):

原生数据结构(string,int,char)在定义时直接在内存开辟空间,因此在函数传参时,会有形参实参的区别,但是高级解构如数组和对象,在定义时首先开辟一块区域存放数据,而在栈中定义一个空间存开辟的区域的地址。因此定义const arr = [1,2,3];数组内容可以改变:arr[0] = 50,但不可以进行:arr = [626,45,222]这种更改指针指向的操作。
在复制操作中也同理:高级的数据结构在复制的时候只是多了一个新指针指向数据地址,但是并没有复制其中的value,在编写代码时要注意这种行为。(用其他语言的行为理解js,js无“引用传递”或指针等概念)

课程打点:几种数据结构的对比


字符串

  • JavaScript在用户调用字符串方法时,自动将字符串转换为字符串对象:装箱(boxing)
  • 返回结果依然为String:拆箱(Unboxing)
const airline = 'TAP Air Portugal';
  • 可像数组一样访问指定位置:airline[0];
  • airline.length; //返回长度
  • airline.indexOf(); //返回传入字符出现的第一个位置(可传字符串)
  • airline.lastIndexOf(); //传入字符所处的最后一个位置

  • airline.slice(a,b); // 从a(包括a)开始向后裁切,取后半部分,到b(不含b),裁出长度:b-a,可传入负数
  • airline.split(); //返回一个数组,将从传入字符切割
  • airline.join(); // 将数组连起来

  • airline.toLowerCase(); //全部换为小写字符
  • airline.toUpperCase(); //大写

  • airline.trim(); //函数移除字符串两侧的空白字符或其他预定义字符。
  • airline.replace(a,b); // return a with b ,只替换第一个出现的,若想全替换:replaceAll(); ,或使用正则表达式:js中的正则:两斜杠/replace/
  • airline.padStart(a, b); //a:扩充到多长,b:用什么字符扩充
  • airline.repeat());

  • airline.includes(); // 返回boolean
  • airline.startsWith(); // 返回boolean
  • airline.endsWith(); // 返回boolean

例:大小写转换

 const output = `${first}${second.replace(
      second[0],
      second[0].toUpperCase()
    )}`;//使用replace进行直接替换
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值