整理一些在项目中用到的js知识

本文深入讲解JavaScript中的高级编程技巧,包括数组操作、数学函数、对象处理、数组去重、随机数生成、深拷贝实现等核心知识。同时,提供代码优化、内存管理建议及Git常用命令,帮助开发者提升代码质量和效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、 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))

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值