常用的JS方法

    这周写了很多项目,也遇到了很多看似很简单的问题,但是实际操作起来发现其实还是有点复杂的,当然也是一些常用的方法,掌握的话,以后也是会经常遇到。当然在此之前,自己也是去网上搜索过,不过网上的东西都是比较杂乱,可能有的满足不了项目的需求,我们可以在一个基础的方法上进行扩展,去达到自己的需求。

    近期遇到的第一个常用的方法就是关于table表格固定表头的问题,网上的方法非常多,有的也是非常的复杂,有的简单但是却满足不了自己的项目,自己遇到的这个项目中,table里面的thead和tbody,都是动态生成的,在加载以后,会出现一个表头,但是没有身体部分,所以表头都是缩小的表头,从服务器取到数据以后,身体部分出现,表头也随着展开。因为字段比较多,所以还出现了横向的滚动条,因此使用fixed的定位,会导致只有表头前几个字段可以看见,后面拉动横向滚动条的时候,表头依然是固定不变的,这样显然达不到自己预想的效果。然后在网上搜到了一个利用滚动事件进行固定的例子,一下子让自己茅塞顿开,对上面的方法也是进行了自己的扩展,下面是代码:

$(window).scroll(function(){
    let scroll = $(window).scrollTop();
    //获取滚动条距离顶部的距离
    $(selector)[0].style.transform = 'translateY("+scrollTop+"px)';
});

    这个主要就是利用了css3的平移变换的transform方法,让表头始终固定在顶部的位置,代码也是非常的简单,当然这个是基于window的滚动事件,如果是某个元素滚动,则在某个元素身上绑定滚动事件即可。另外一个则是如何将json转换成树形结构,这个网上的代码非常多,自己也是看了很多,一直没有能明白其中的意思,后来也是将代码写一遍,并且log了很多次,才明白了原理,这里也是详细解释一下这个代码的意思。

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
</head>
<body>
	<script>
		/*
		*@param {json} 		需要转换的json数据
		*@param {string}	数组的id属性字符串
		*@param {string}	数组元素父级元素的id属性,也就是pid的意思
		*@param {string}	数组元素子元素的属性名
		*@return {array}	返回数组
		*/
		function transJson(jsonData,id,pid,children){
			let arr = [],hash = [],len = jsonData.length;
			for(let i = 0;i < len;i++){
				hash[jsonData[i][id]] = jsonData[i];	
				//将数组转换成对象的形式,即a[i][id]是数组中的id属性作为hash数组的属性名
			}
			for(let j = 0;j < len;j++){
				//aVal实际就是jsonDate数组,hashVP则代表hash数组的父元素的id,即pid
				let aVal = jsonData[j],hashVP = hash[aVal[pid]];
				if(hashVP){
					!hashVP[children] && (hashVP[chilren] = [])	
					//判断父对象是否存在,即pid是否存在,不存在,则将对象放到第一层
					hashVP[children].push(aVal);	//存在的话就将本对象放入chilren属性
				}else{
					r.push(aVal);
				}
			}
		}
	</script>
</body>
</html>

    自己看这段代码的时候,开始始终无法理解pid的意思,尝试了很多次,最后再知道pid就是指向父元素的id的意思,如果pid不存在的话,那就将这个对象放在最外层。当然转换json的结构,也只是第一步,如何将json属性结构去体现在dom上,自己也是尝试写过,但是抽象不出来方法,面对那些无限嵌套的情况,也是束手无策,网上看到的方法也是比较复杂,难以理解,如果有小伙伴知道,也可以和我分享大笑


    最后最近写表格数据比较多,也是用到了很多增删改查的方法,筛选的条件少的话,还好说,但是条件一旦多了,要判断很多次,容易漏掉很多种情况,看到网上有说用面向对象的方法来解决,但是奈何自己能力有限,也是没有能完全理解,近期也是会对增删改查的问题继续研究,明白的话,也是会放在博客上和大家继续分享。    
### 前端开发中常用的 JavaScript 方法总结 在前端开发过程中,JavaScript 是不可或缺的一部分。以下是常见的 JavaScript 方法及其用途: #### 数组操作方法 数组作为数据结构的一种,在日常开发中非常常见。以下是一些用于处理数组的常用方法: - `map()`:创建一个新的数组,其结果是对调用数组中的每个元素都执行一次回调函数的结果[^3]。 ```javascript const numbers = [1, 2, 3]; const doubledNumbers = numbers.map(num => num * 2); console.log(doubledNumbers); // 输出: [2, 4, 6] ``` - `filter()`:创建一个新数组,其中包含通过所提供函数实现的测试的所有元素。 ```javascript const words = ['hello', 'world', 'javascript']; const longWords = words.filter(word => word.length > 5); console.log(longWords); // 输出: ["world", "javascript"] ``` - `reduce()`:对数组中的每个元素依次执行回调函数,将其结果汇总为单个值。 ```javascript const sum = [0, 1, 2, 3].reduce((accumulator, currentValue) => accumulator + currentValue, 0); console.log(sum); // 输出: 6 ``` - `forEach()`:对数组的每个元素执行一次提供的函数。 ```javascript const fruits = ['apple', 'banana', 'orange']; fruits.forEach(fruit => console.log(fruit)); // 输出: // apple // banana // orange ``` #### 字符串操作方法 字符串也是经常使用的数据类型之一,以下列举了一些实用的方法: - `split(separator)`:按照指定分隔符将字符串分割成子字符串并存入数组[^1]。 ```javascript const str = "a,b,c"; const result = str.split(","); console.log(result); // 输出: ["a", "b", "c"] ``` - `trim()`:去除字符串两端的空白字符。 ```javascript const greeting = " Hello World! "; console.log(greeting.trim()); // 输出: "Hello World!" ``` #### 对象操作方法 对象是存储键值对的重要方式,以下是一些与对象相关的常用方法: - `Object.keys(obj)`:返回由给定对象自身的可枚举属性组成的数组。 ```javascript const obj = { a: 1, b: 2 }; console.log(Object.keys(obj)); // 输出: ["a", "b"] ``` - `Object.values(obj)`:返回一个由给定对象自身的所有可枚举属性值组成的数组。 ```javascript const obj = { a: 1, b: 2 }; console.log(Object.values(obj)); // 输出: [1, 2] ``` #### 工具类方法封装 为了提高代码复用性和效率,通常会将一些通用功能封装起来形成工具包。例如文中提到的一个名为`js-tool-big-box`的学习资源提供了丰富的 API 和讲解说明[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值