一、 JS知识点:
1. .includes();//判断是否包含啥啥啥,返回布尔
startsWith(); endsWith()// /判断是否以啥啥啥开头或结尾的,返回布尔
2. Math.max(...[14, 3, 26]); //26, ...用法
或者 Math.max.apply(null, arr)
num | 0 , 相当于Math.floor(num), 即对num向下取整
向上取整是Math.ceil(num)
~~: 双非按位取反运算符 ,对于正数,它向下取整;对于负数,向上取整;非数字取值为0
~~null; // => 0
~~undefined; // => 0
~~Infinity; // => 0
--NaN; // => 0
~~0; // => 0
~~{}; // => 0
~~[]; // => 0
~~(1/0); // => 0
~~false; // => 0
~~true; // => 1
~~1.9; // => 1
~~-1.9; // => -1
3. const a2 = [...a1] ; //赋值a1数组,不会对a1产生影响
arr.slice(0) // 克隆数组
JSON.parse(JSON.stringify(obj)) //深拷贝
4. [...a1, ...a2] ;//合并数组
5. Array.of(3, 11, 8) ;// [3, 11, 8]转换为数组
6. .find() // 找value ; .findIndex(); //找索引
7. 箭头函数 const full = (a, b) => ` ${a} 和 ${b}`;
8. 返回对象 fun() { return foo: 1 , bar: 2};
let {a, b} = fun(); //a = 1 ; b = 2
9. Array.indexOf(ele, index)方法解读。
找到并返回ele在array中的位置索引(不是从哪个位置数)
1. 没有index参数, 返回ele在数组中出现的第一个位置,没有找到返回-1;
2. 有index参数,表示从该位置起,查找ele在数组中的位置。
//如果index> array.length; 返回-1
//如果index是负数, 如-1, 表示从最后一个元素开始找, -2 ,表示从倒数第二个开始找。
var array = [2, 5, 9];
console.log(array.indexOf(2)); //0
console.log(array.indexOf(7)); //-1
console.log(array.indexOf(5, 2)); //2 (从索引为2,也就是9起,9 => 0, 2 => 1, 5 =>2)
console.log(array.indexOf(2, -1)); //-1 (索引-1, 从最后一个开始,也就是9起)
console.log(array.indexOf(2, -3)); //0
10.
// 去掉小数部分
function getInt() {
let num = 2.345
console.log(parseInt(num)) // 2
console.log(~~num) // 2
console.log(num >> 0) // 2
console.log(num | 0) // 2 向下取整, 类似于Math.ceil(num)
}
11.
// 判断 x 是否是整数
function isInt(x) {
return (x ^ 0) === x
// return Math.round(x) === x
// return (typeof x === 'number') && (x % 1 === 0)
// return Number.isInteger(x)
}
12、 判断符号是否相同
function sameSign(a, b) { return (a ^ b) >= 0}
13. 数组去重
ES6Array.from(new Set(arr))
ES5arr.filter(function(ele, index, array){ return index===array.indexOf(ele)})
14.
随机获取数组的一个成员
function randomOne(arr) { return arr[Math.floor(Math.random() * arr.length)]}
15.
产生随机颜色
function getRandomColor() { return `#${Math.random().toString(16).substr(2, 6)}`}
判断obj对象上是否有key属性
let hasOwnProperty = Object.prototype.hasOwnProperty
function hasOwn(obj, key) {
return hasOwnProperty.call(obj, key)
}
16.
数组对象深拷贝(解决由于引用赋值修改原对象的方法)
function coppyArray(arr){
return arr.map((e)=>{
if(typeof e==='object'){
return Object.assign({},e);
}else{
return e;
}
})
}
17. git知识
1. git checkout -b hotfix ;//检出一个新分支hotfix
2. git add ...; git commit -m '提交';
3. git status; //显示环境分支
4. git checkout dev //回到dev环境
5. git pull origin dev;
6. git merge --no-ff -m '合并分支' hotfix ; //合并hotfix分支到dev环境
7. git push origin dev;
18: 优化内存的技巧
一、尽量不要定义全局变量
// 尽量不要使用var, 而是使用let , const
二、全局变量记得销毁掉
var arr = [1,2,3]
arr = undefined // 手动销毁
三、 用匿名自执行函数变全局为局部
(function () {
var arr = [1,2,3]
})()
四、尽量避免闭包(现在浏览器已经是异步了,闭包可以使用)
19. 快速排序
let arr = [1,4,32,4,2,4,9,8,9,0,3,2]
function quickSort(array) {
let len = array.length
if (len < 2) {
return array
}
let pivot = array[len-1]
let left = array.filter((arr, index) => arr <= pivot && index !== len -1)
let right = array.filter(arr => arr > pivot)
return [...quickSort(left), pivot, ...quickSort(right)]
}
console.log(quickSort(arr))