js和es6知识点总结

5 篇文章 0 订阅

1. js数据类型有哪些

基本类型:数字类型(NUMBER)、字符串类型(String)、布尔类型(Boolean)、空型(null)、未定义型(undef)、唯一值型(symbol)
引用数据类型:数组、函数、对象、set、map

2. 内置对象有哪些(**********)

内置对象:
数学对象Math、日期对象new Data()、数组对象new Array()、字符串对象new String()

数学对象:
Math.PI // 圆周率
Math.random() // 生成随机数 (0-1)
Math.floor() // 向下取整
Math.ceil() / /向上取整
Math.round() // 取整,四舍五入
Math.abs() // 绝对值
Math.max() // 求最大
Math.min() //求最小值

日期对象
var date = new Date() //当前的时间
var year = date.getFullYear() //获取年
var month = date.getMonth()+1 //获取月
var dates = date.getDate() // 获取日
var h = date.getHours() // 获取小时
var m = date.getMinutes() // 获取分钟
var s = date.getSeconds() // 获取秒
var ms = date.getMilliseconds() // 获取毫秒
var week = date.getDay(); //获取周\

数组对象(**********)
var arr = new Array() //创建数组对象
判断是否是数组的方式:1、instanceof 2、Array.isArray(变量/值)
数组添减:
1、前面添加unshift()
2、后面添加push()
3、去掉最后一个pop()
4、去掉第一个shift()
reverse 方法,数组翻转
sort方法,数组排序
concat方法,连接字符,拼接字符串,返回一个新数组不会改变原来的大小
slice 方法,选取数组的一部分,并返回一个新数组。
splice 方法,用于添加或删除数组中的元素
indexOf方法,从前往后找 找到最近的为止 然后输出索引值,如果寻找的值 在该数组中并不存在 则会输出-1
lastIndexOf方法,从后往前找 找到最近的为止 然后输出索引值,如果寻找的值 在该数组中并不存在 则会输出-1
join方法,数组转化为字符串,如果括号中什么都不加 也是默认以逗号隔开,如果添加符号 就会以添加的符号隔开
foreach 方法遍历数组
some 方法用以判断数组中某一项是否满足条件
every方法,判断数组中所有元素是否满足条件,返回boolean值
map方法,相当于中间处理函数,返回映射数组
filter方法,用于创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。
find方法,返回通过测试(函数内判断)的数组的第一个元素的值。 findIndex 则是返回索引

字符串对象(**********)
indexOf方法,从前往后找 找到最近的为止 然后输出索引值,如果寻找的值 在该数组中并不存在 则会输出-1
lastIndexOf方法,从后往前找 找到最近的为止 然后输出索引值,如果寻找的值 在该数组中并不存在 则会输出-1
substr(start,length),从start位置开始(索引号),length取的个数
substring(start,end),从start位置开始,截取到end位置,end取不到,基本和slice相同,但是不接受负值。
concat(str1,str2,str3…),concat()方法用于连接两个或多个字符串。拼接字符串,等效于+,+更常用
slice(start,end),从start位置开始,街取到end位置,end取不到(他们俩都是索引号)
charAt(index),获取指定位置字符
trim(),去除字符串前后的空白
split(‘分隔符’), 字符转换为数组
replace(‘被替换的字符’,‘替换为的字符’),替换字符串
search(),检索位置,用于检索字符串中指定的子字符串,返回子字符串的起始位置

3. 数组方法有哪些

join (原数组不受影响)
该方法可以将数组里的元素,通过指定的分隔符,以字符串的形式连接起来。返回值:返回一个新的字符串
split (原数组不受影响)
该方法是用过指定的分隔符,将字符串分割成数组。返回值:返回一个新的数组
push(改变原数组)
该方法可以在数组的最后面,添加一个或者多个元素;结构: arr.push(值);返回值:返回的是添加元素后数组的长度.
pop(改变原数组)
该方法可以在数组的最后面,删除一个元素;结构: arr.pop();返回值:返回的是刚才删除的元素
unshift(改变原数组)
该方法可以在数组的最前面,添加一个或者几个元素;结构: arr.unshift(值);返回值: 返回的是添加元素后数组的长度
shift(改变原数组)
该方法可以在数组的最前面,删除一个元素;结构: arr.shift();返回值: 返回的是刚才删除的元素
reverse 翻转数组(改变原数组)
结构:arr.reserse()
sort(改变原数组)
该方法可以对数组进行排序.默认从大到小,其中的参数是一个函数
concat(原数组不受影响)
该方法可以把两个数组里的元素拼接成一个新的数组;返回值: 返回拼接后的新数组
slice 截取(原数组不受影响)
该方法可以从数组中截取指定的字段,返回出来;返回值:返回截取出来的字段,放到新的数组中,不改变原数组
splice(改变原数组)
结构1: arr.splice(start,deletedCount)
纯删除;从start下标开始,删除几个
结构2:arr.splice(start,deletedCount,item) 替换;从start下标开始,删除几个,并在该位置添加item
结构3: arr.splice(start,0,item) 纯添加;从start下标开始,删除0个,并在该位置添加item,start开始全部往后移动
indexOf
该方法用来查找元素在数组中第一次出现的位置;结构: arr.indexOf(元素)
lastIndexOf
该方法用来查找元素在数组从后往前第一次出现的位置;结构: arr.lastIndexOf(元素)
forEach()
该方法等同于for循环,没有返回值
map()
映射,该方法使用和forEach大致相同,但是该方法有返回值,返回一个新数组,新数组的长度和原数组长度相等
filter()
filter方法: 有返回值, 过滤出符合条件的元素
some
判断数组中有没有符合条件的项(只要有,就返回true),如果一个都没有,才返回false
every
判断数组中所有的项是否满足要求,如果全都满足,才返回true,否则返回false
Find
找到符合条件的项,并且返回第一项
findIndex
找到符合条件的项的下标,并且返回第一个

4. 数组去重几种方式

1、定义一个新数组,并存放原数组的第一个元素,然后将元素组一一和新数组的元素对比,若不同则存放在新数组中
2、先将原数组排序,在与相邻的进行比较,如果不同则存入新数组。
3、利用对象属性存在的特性,如果没有该属性则存入新数组。
4、利用数组的indexOf下标属性来查询。
5、利用数组原型对象上的includes方法。
6、利用数组原型对象上的 filter 和 includes方法。
7、利用数组原型对象上的 forEach 和 includes方法。
8、利用数组原型对象上的 splice 方法。
9、利用数组原型对象上的 lastIndexOf 方法。
10、利用 ES6的set 方法。
http://t.csdn.cn/IUJmk

5. 数组深拷贝几种方式

1、for循环实现
2、slice方法
3、concat方法
4、ES6扩展运算符实现
http://t.csdn.cn/f2YMX

6. 对象深拷贝几种方式

1、通过JSON.stringify() 和 JSON.parse() 将对象转为字符串之后在转为对象。当值为undefined、function、symbol会在转换过程中被忽略。
2、es6解构赋值,只能深度拷贝对象的第一层,如果对象中的属性也是对象的话,没有办法进行深度拷贝的
3、for in 循环遍历对象,只能深度拷贝对象的第一层
4、Object.assign() 对象的合并,第一个参数必须是空对象,只能深度拷贝对象的第一层
5、利用循环和递归的方式,在循环递归中需要注意设置临界值(typeof obj[key] == ‘object’),否则会造成死循环
http://t.csdn.cn/Pi5hO

7. 定时器有几种,有什么区别

分为setTimeout、setInterval、requeTanimationFrame(动画API)
setTimeout只执行一次、setInterval可以执行多次;清除setTimeout,clearTimerout、清除setInterval,clearInterval

8. 说下对Promise的理解

1、Promise是一个构造函数,可以通过 new Promise()得到一个 Promise 的实例;
2、在 Promise 上,有两个函数,分别叫做 resolve(成功之后的回调函数) 和 reject(失败之后的回调函数) ;
3、在 Promise 构造函数的 Prototype 属性上,有一个 .then() 方法,也就说,只要是 Promise 构造函数创建的实例,都可以访问到这个 .then() 方法 ;
4、Promise 表示一个 异步操作;每当我们 new 一个 Promise 的实例,这个实例,就表示一个具体的异步操作;
5、既然 Promise 创建的实例,是一个异步操作,那么,这个 异步操作的结果,只能有两种状态:
状态1: 异步执行成功了,需要在内部调用 成功的回调函数 resolve 把结果返回给调用者;
状态2: 异步执行失败了,需要在内部调用 失败的回调函数 reject 把结果返回给调用者;
6、由于 Promise 的实例,是一个异步操作,所以,内部拿到 操作的结果后,无法使用 return 把操作的结果返回给调用者; 这时候,只能使用回调函数的形式,来将成功 或 失败的结果,返回给调用者;
7、我们可以在 new 出来的 Promise 实例上,调用 .then() 方法,预先为 这个 Promise 异步操作,指定成功(resolve) 和 失败(reject) 回调函数;
8、我们 new 出来的 Promise, 只是代表形式上的一个异步操作;什么是形式上的异步操作:就是说,我们只知道它是一个异步操作,但是它做什么具体的异步事情,目前还不清楚

9. 说下对模块导入导出的理解

导出变量:export{}
导入变量:import{}
注意:

  1. 整体导入所有的变量 import * as 自定义对象 from ‘url’
  2. 默认导出(只能导出一个)export default

10. 箭头函数和普通函数的区别

箭头函数比普通函数更加简洁
箭头函数没有自己的this,它只会在自己作用域的上一层继承this
箭头函数继承来的this指向永远不会改变
call()、apply()、bind()等方法不能改变箭头函数中this的指向
箭头函数不能作为构造函数使用
箭头函数没有自己的arguments
箭头函数没有prototype

11. Js实现约瑟夫环问题(m个人留1个或者留n-1个)

// sum代表多少个人,score代表报什么数组排除
function ring (sum, score) {
var numbers = [];
for (var i = 1; i <= sum; i++) {
numbers.push(i);
}
var flag = 0;
while (numbers.length > 1) {
l = numbers.length;
for (var j = 0; j < l; j++) {
flag++;
// 为3时,用splice方法从numbers数组中去掉,改变元数组
// 因原数组长度-1,所以索引-1,循环的长度-1
// 当编号为100时,flag = 1,重新开始报数是1的flag为2,解决的龙摆尾报数的问题
if (flag == score) {
flag = 0;
numbers.splice(j, 1);
j–;
l–;
}
}
}
return numbers[0];
};
console.log(ring(100, 3));
console.log(ring(200, 3));
ring(100, 3) // 91
ring(100, 5) // 47
ring(200, 3) // 128

12. 数组排序的几种写法

利用sort()方法排序
冒泡排序法
选择排序法:选一个最大或最小的进行比较排序
插入排序法:选定一个数据,遍历数组不断比较

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值