0x00 内置对象
·Date对象中的getMonth()方法获取的月份比实际月份小一;
·获取时间戳的方法:
①var time = +new Date();
②var time = Date.now(); // h5 新增
·数组对象常用方法
①isArray();判断是否为数组,返回值为true or false;
②push();向数组末尾添加数组元素; 返回值为数组长度;
③pop();向数组末尾去除一个元素;返回值为删除的元素
④unshift();向数组开头添加数组元素;返回值为数组长度;
⑤shift();删除数组第一个元素;返回值为删除的元素;
⑥reverse();翻转数组;
⑦sort();数组排序
升序
<script>
let arr1 = [1,39,24,11,456];
arr1.sort((a,b) => {
return a-b;
})
console.log(arr1);
</script>
降序
<script>
let arr1 = [1,39,24,11,456];
arr1.sort((a,b) => {
return b-a;
})
console.log(arr1);
</script>
⑧查找数组索引
indexOf();从数组前面开始查找,找到第一个匹配的元素后返回该元素的索引;若无匹配,则返回-1;
lastIndexof();从数组末尾开始查找,找到第一个匹配的元素后返回该元素的索引;若无匹配,则返回-1;
面试经典案例,数组去重
<script>
let arr1 = [1,39,24,11,456,1281,39,234,123,5,23,53,11,234];
let unique = (arr1) => {
let arr2 = [];
for(let i = 0;i < arr1.length;i++){
if(arr2.indexOf(arr1[i]) === -1){
arr2[arr2.length] = arr1[i];
}
}
console.log(arr2);
}
unique(arr1);
</script>
⑨join();可以将数组转换为字符串,分隔符作为参数输入;
⑩splice();可以用来删除或者添加数组中的元素
let myFish = ['angel', 'clown', 'drum', 'sturgeon'];
let removed = myFish.splice(2, 1, "trumpet");
// 运算后的 myFish: ["angel", "clown", "trumpet", "sturgeon"]
// 被删除的元素: ["drum"]
0x01 字符串对象
①定义字符串时进行了基本数据类型包装,将简单数据类型转换为了复杂数据类型
②字符串的不可变性,当声明并赋值一个字符串时,js在内存中开辟了一块空间用来存储该字符串,并指向这个空间,当字符串被修改时,js会新开辟一块空间用来储存新字符串,并指向新的空间,但原来的值并没有改变
经典面试题 查找某字符串中的某个元素的出现次数和位置
<script>
let str1 = 'shdbavsciajsifuirhabsj';
let queryString = (str1) => {
let frequency = 0;
let lastFlag = -1;
for (let i = 0; i<str1.length; i++){
let flag = str1.indexOf('s',i);
if(flag !== -1 && flag !== lastFlag){
frequency++;
lastFlag = flag;
console.log('第'+frequency+'次出现,位置为'+flag);
}
}
}
queryString(str1);
</script>
③charAt();根据位置返回字符
④charCodeAt();根据位置返回字符的ascii码,可以用来判断用户按了哪个键
经典面试题 判断一个字符串中出现次数最多的字符是哪个,并统计其次数
<script>
let str1 = 'shdbavsciajsifuirhabsj';
let queryString = (str1) => {
let obj = {};
for (let i = 0; i < str1.length; i++){
if(obj[str1[i]]){
obj[str1[i]]++;
}else{
obj[str1[i]] = 1;
}
}
let maxNum = 0;
let maxChar;
for (let k in obj){
if(obj[k] > maxNum){
maxNum = obj[k];
maxChar = k;
}
}
console.log('出现次数最多的字符是' + maxChar + '\n' + '出现次数为:' + maxNum );
}
queryString(str1);
</script>
⑤substr();截取字符串,输入的参数为起始位置和截取的长度;
⑥replace();替换字符串;
0x02 简单数据类型和复杂数据类型
简单数据类型又称值类型,在储存时变量储存的是值本身,简单数据类型有string,boolean,number,null,undefined五种,其中null返回值为空对象;简单数据类型数据存储直接存储在栈里面。所以简单;类型的传参,数据不会互相影响;
复杂数据类型又称引用类型,用new创建的都是复杂数据类型。复杂数据类型在栈中存放地址,地址指向堆中的某区域,数据都储存在堆中的这块空间中。所以复杂数据类型的传参,属性值的更改会相互影响;
<script>
let obj = {
name : 'aaa',
age : 14
}
let fn = (obj1) => {
console.log(obj1.age);
obj1.age = 28;
}
fn(obj);
console.log(obj.age);
</script>
0x03 Dom
①console.dir()可以打印元素对象,更好的查看里面的属性方法;
②常用的Dom选择元素的方法:getElementsById(); getElementsByTagName() getElementsByClassName();
querySelector(); // h5新特性,只返回匹配到的第一个元素
querySelectorAll(); //同上,返回匹配到的所有元素