博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2021-01-08-补2021-1-8之前的 && 1399. 统计最大组的数目 && Map&&reduce
阅读量:3956 次
发布时间:2019-05-24

本文共 2093 字,大约阅读时间需要 6 分钟。

12.31

考察new关键字

1. foo = new bar() 会在函数bar内部创建一个空对象,并且this指向这个空对象;

2. 并且使用new之后,return已经失效了,可以注释掉return进行验证。

3. 使用let和var定义x, 结果都是2。但是使用let时候定义在全局的x的值不会被改变。

    :1          : 2          两者的this均指向window;因为let有自己的作用域

 

   

(document在window下)

this指向window, let定义在document。从内向外找x; 如果没有let定义x, 那么x 就 是3

 

 

1.1

bar只能在函数内部访问到,在外部是不可以的;并且在函数调用的时候只能使用foo(),不能使用bar();

 

 

1.2

ES6中let:变量先声明后使用;

 

 

1.3

Set内部储存的是key值。自动去重。

 

 

1.4 

 

两种方法都可以,但是使用Set更好,因为可以去重: 先转为Set后去重,再转为数组。

 

1.5

 

 

1.6

 

 

1.8

undefined

函数或者构造函数身上有prototype,但是new出来的实例对象身上是没有prototype的。

但是实例对象身上有_proto_, _proto_指向prototype。

 

 

function countLargestGroup(n){  let map = new Map();  for(let i = 1; i <= n; i++){    let key = [...String(i)].reduce((pre, cur) => Number(pre) + Number(cur));    map.set(Number(key), map.has(key) ? map.get(key)+1 : 1);    // key需要转化为Number类型;因为reduce函数没有传入参数,默认的第一个值是数组第一位;此时从数组第二位开始reduce。  }  return [...map.values()].filter(item => item === Math.max(...map.values())).length;}
function getLargestGroup(n){  let map = new Map();  for(let i = 1; i <= n; i++){    let key = [...String(i)].reduce((pre, cur) => Number(cur) + Number(pre));    map.set(Number(key), map.has(key)?map.get(key)+1:1);  }  return [...map.values()].filter(n => Math.max(...map.values()) == n).length;}function getLargestGroup1(n){  let map = {};  let max = 0;  let count = 0;  for(let i = 1; i <= n; i++){    let sum = 0;    let key = i.toString().split("").forEach(n => sum += n);    if(map[key]){      map[key] += 1;    }else{      map[key] = 1;    }  }  max = Math.max(...Array.from(map.values()));  for(let val of m.values()){    if(val == max){      count++;    }  }  return count;}

知识点

1,

key需要转化为Number类型;因为reduce函数没有传入参数,默认的第一个值是数组第一位,第一位是字符串“1”;此时从数组第二位开始reduce。

2.

扩展运算符:         可以将字符串转化为数组:实现split("")的功能:[...String("12")] 

 

                              可以将map或者set的value和key取出并转为数组:实现类似Array.from(map.values()): [...map.values()]

                              可以配合Math.max或者Math.min使用求得最值:Math.max(...arr)

 

3.

 forEach遍历 : let sum = 0;  arr.forEach(n => sum += n)

 

4.

map的创建与访问方法: 

                     (1)let map = new Map();             if ( map.has('key') ) { map.get('key')++ }

                     (2)map = {};             if ( map['key'] )   { map['key']++ }   

 

 

5.    

"agfadsgh".toSring()  与 String("agfadsgh") 效果相同。

 

 

 

 

 

 

 

 

 

 

转载地址:http://dgtzi.baihongyu.com/

你可能感兴趣的文章
linux 手动清理缓存
查看>>
find联合mv或者cp
查看>>
使用ntpdate命令同步时间后,时间还是不准确问题的解决
查看>>
linux设置开机自启动
查看>>
shell获取文件最后修改时间
查看>>
修改普通用户为root权限
查看>>
windows添加计划任务
查看>>
source filename 与 sh filename 及./filename执行脚本的区别
查看>>
批处理获取某路径下最新创建的文件的名称
查看>>
Ubuntu 各版本代号简介
查看>>
mysql创建只读和运维用户
查看>>
配置本地yum源2
查看>>
SQLServer 2016报错Microsoft R Open 和 Microsoft R Server的解决方案
查看>>
shell获取最新文件
查看>>
SqlServer2016添加计划作业
查看>>
用Navicat备份SqlServer表,制作定时任务
查看>>
VM虚拟机桥接出现connect: network is unreachable
查看>>
windows计划任务执行,但是程序未执行
查看>>
ifcfg-ens33中ip和ifconfig出来的ip不一致
查看>>
nginx正常运行,访问报错502 bad gateway
查看>>