JS Array数组常用方法(附上相应的用法及示例)

news2024/11/25 16:51:39

改变原数组的方法

1、array.push(需要在末尾添加的数据)【给数组末尾添加一个元素】
2、array.unshift(需要在首位添加的数据)【给数组首位添加一个元素】
3、array.pop()【从数组末尾删除元素,不需要传参】
4、array.shift()【从数组首位开始删除元素,不需要传参】
5、array.reverse()【反转数组,不需要传参】
6、array.splice(开始索引[默认值为0],需要截取的数量[默认值为0],要插入的数据[默认不插入,不传此参数则表示只截取,不插入])【截取元素或截取后添加新的元素(三个参数)】
7、array.sort()【数组排序】的三种使用方式
	01、array.sort()【不传参,按位排序】
	02、array.sort(function(a,b){return a - b})【传一个函数作为参数,从小到大排序】
	03、array.sort(function(a,b){return b - a})【传一个函数作为参数,从大到小排序】

不会改变原数组的方法

1、array.join(连接符)【数组转字符串(不传参,则直接把原数组转成字符串;传入连接符,则用传入的符号连接数组里的数据并转换成字符串)】
2、array.concat(需要合并的数组)【数组合并】
3、array.slice(开始索引[默认值为0],结束索引[默认值为数组长度:array.length])【截取数组(截取的数组包含开始的索引,不包含结束的索引)】
4、array.indexOf(要查找的数据)【查找元素在数组中的索引(如果有数据,返回第一次出现的索引值,没有该数据,返回-1)】
5、array.forEach(注解:item[数组每一项的值],index[数组每一项的下标],array[原数组])【遍历数组】的两种写法
	01、array.forEach(function(item,index,array){})
	02、array.forEach((item,index,array)=>{})//推荐此写法
6、array.map()(注解:item[数组每一项的值],index[数组每一项的下标],array[原数组])【映射数组】的两种写法
	01、array.map(function(item,index,array){})
	02、array.map((item,index,array)=>{})//推荐此写法
7、array.filter()【数组过滤】的两种写法
	01、array.filter(function(item,index,array){书写过滤条件})
	02、array.filter((item,index,array)=>{书写过滤条件})//推荐此写法
8、array.every()【判断是否全部满足条件,必须全部满足条件才返回true】的两种写法
	01、array.every(function(item,index,array){书写查找条件})
	02、array.every((item,index,array)=>{书写查找条件})//推荐此写法
9、array.some()【判断是否有满足条件的项,只要有一个满足条件则返回true】
	01、array.some(function(item,index,array){书写查找条件})
	02、array.some((item,index,array)=>{书写查找条件})//推荐此写法

array.push(需要在末尾添加的数据)【给数组末尾添加一个元素】

<script>
	/*
	*简单数组操作示例
	*/ 
	let arr = [1, 3, 4, 5]; //原数组
	arr.push('要追加的任意值'); //操作数组的方法
	console.log(arr, '简单数组追加数据后的结果')
	/*
	*复杂数组操作示例
	*/
	let complexArr = [{
		name: '张三',
		age: '14'
	}, {
		name: '李四',
		age: '15'
	}] //原数组
	complexArr.push({
		name: '王五',
		age: '16'
	}) //操作数组的方法
	console.log(complexArr, '复杂数组追加数据后的结果')
</script>

array.unshift(需要在首位添加的数据)【给数组首位添加一个元素】 

<script>
	/*
	*简单数组操作示例
	*/ 
	let arr = [1, 3, 4, 5]; //原数组
	arr.unshift('要追加的任意值'); //操作数组的方法
	console.log(arr, '简单数组追加数据后的结果')
	/*
	*复杂数组操作示例
	*/
	let complexArr = [{
		name: '张三',
		age: '14'
	}, {
		name: '李四',
		age: '15'
	}] //原数组
	complexArr.unshift({
		name: '王五',
		age: '16'
	}) //操作数组的方法
	console.log(complexArr, '复杂数组追加数据后的结果')
</script>

 

 array.pop()【从数组末尾删除元素,不需要传参】

<script>
	/*
	 *简单数组操作示例
	 */
	let arr = [1, 3, 4, 5]; //原数组
	arr.shift(); //操作数组的方法
	console.log(arr, '简单数组操作后的结果')
	
	/*
	 *复杂数组操作示例
	 */
	let complexArr = [{
		name: '张三',
		age: '14'
	}, {
		name: '李四',
		age: '15'
	}] //原数组
	complexArr.shift() //操作数组的方法
	console.log(complexArr, '复杂数组操作后的结果')
	
</script>

 

 array.shift()【从数组首位开始删除元素,不需要传参】

<script>
	/*
	 *简单数组操作示例
	 */
	let arr = [1, 3, 4, 5]; //原数组
	arr.shift(); //操作数组的方法
	console.log(arr, '简单数组操作后的结果')
	
	/*
	 *复杂数组操作示例
	 */
	let complexArr = [{
		name: '张三',
		age: '14'
	}, {
		name: '李四',
		age: '15'
	}] //原数组
	complexArr.shift() //操作数组的方法
	console.log(complexArr, '复杂数组操作后的结果')
	
</script>

array.reverse()【反转数组,不需要传参】 

<script>
	/*
	 *简单数组操作示例
	 */
	let arr = [1, 3, 4, 5]; //原数组
	arr.reverse(); //操作数组的方法
	console.log(arr, '简单数组操作后的结果')
	
	/*
	 *复杂数组操作示例
	 */
	let complexArr = [{
		name: '张三',
		age: '14'
	}, {
		name: '李四',
		age: '15'
	}] //原数组
	complexArr.reverse() //操作数组的方法
	console.log(complexArr, '复杂数组操作后的结果')
	
</script>

 

array.splice(开始索引[默认值为0],需要截取的数量[默认值为0],要插入的数据[默认不插入,不传此参数则表示只截取,不插入])【截取元素或截取后添加新的元素(三个参数)】 

<script>
	/*
	 *简单数组操作示例
	 */
	let arr = [1, 3, 4, 5]; //原数组
	arr.splice(1,1); //操作数组的方法(从下标1开始截取,截取一个元素)
	console.log(arr, '简单数组操作后的结果(从下标1开始截取,截取一个元素)')
	let arr1 = [1, 3, 4, 5]; //原数组
	arr1.splice(0,1,8); //操作数组的方法(从下标0开始截取,截取一个元素,并在截取的位置插入元素8)
	console.log(arr1, '简单数组操作后的结果(从下标0开始截取,截取一个元素,并在截取的位置插入元素8)')
	/*
	 *复杂数组操作示例
	 */
	let complexArr = [{
		name: '张三',
		age: '14'
	}, {
		name: '李四',
		age: '15'
	}] //原数组
	complexArr.splice(1,1) //操作数组的方法(截取下标为1的数据)
	console.log(complexArr, '复杂数组操作后的结果(截取下标为1的数据)')
</script>

 

7、array.sort()的三种使用方式

      01、array.sort()【数组排序,不传参,按位排序】

      02、array.sort(function(a,b){return a - b})【数组排序,传一个函数作为参数,从小到大排序】

      03、array.sort(function(a,b){return b - a})【数组排序,传一个函数作为参数,从大到小排序】

<script>
	/*
	 *简单数组操作示例(01、array.sort()【数组排序,不传参,按位排序】)
	 */
	let arr = [1, 23, 11, 33, 14, 45]; //原数组
	arr.sort(); //操作数组的方法
	console.log(arr, '简单数组操作后的结果[按位排序]')
	/*
	 *简单数组操作示例(02、array.sort(function(a,b){return a - b})【数组排序,传一个函数作为参数,从小到大排序】)
	 */
	let arr1 = [1, 23, 11, 33, 14, 45]; //原数组
	arr1.sort(function (a, b) {
		return a - b
	}); //操作数组的方法
	console.log(arr1, '简单数组操作后的结果[从小到大排序]')
	/*
	 *简单数组操作示例(array.sort(function(a,b){return b - a})【数组排序,传一个函数作为参数,从大到小排序】)
	 */
	let arr2 = [1, 23, 11, 33, 14, 45]; //原数组
	arr2.sort(function (a, b) {
		return b - a
	}); //操作数组的方法
	console.log(arr2, '简单数组操作后的结果[从大到小排序]')

</script>

array.join(连接符)【数组转字符串(不传参,则直接把原数组转成字符串;传入连接符,则用传入的符号连接数组里的数据并转换成字符串)】

<script>
	/*
	 *简单数组操作示例(不传参,则直接把原数组转成字符串)
	 */
	let arr = [1, 23, 14, 45]; //原数组
	let changeArr = arr.join(); //操作数组的方法(不会改变原数组,所以需要声明一个变量接收改变后的数据)
	console.log(arr, '原数组')
	console.log(changeArr, '简单数组操作后的结果,未传参')
	/*
	 *简单数组操作示例(传参,则用传入的符号连接数组里的数据并转换成字符串)
	 */
	let arr1 = [1, 3, 4, 5]; //原数组
	let changeArr1 = arr1.join('-'); //操作数组的方法(不会改变原数组,所以需要声明一个变量接收改变后的数据)
	console.log(arr1, '原数组')
	console.log(changeArr1, '简单数组操作后的结果,传入-作为连接符')
	/*
	 *复杂数组操作示例(传参,则用传入的符号连接数组里的数据并转换成字符串)
	 */
	let complexArr = [{
		name: '张三',
		str: [1, 23, 14, 45]
	}, {
		name: '李四',
		str: [1, 3, 4, 5]
	}] //原数组
	complexArr.forEach((item, index) => {
		complexArr[index].str= item.str.join('-')
	})
	console.log(complexArr, '复杂数组操作后的结果,传入-作为连接符');
</script>

array.concat(需要合并的数组)【数组合并】

tips之es6语法(推荐):[...array,...array1](分别传入需要合并的两个数组名)【数组合并】 

<script>
	/*
	 *简单数组操作示例
	 */
	let arr = [1, 23, 14, 45]; //原数组
	let arr1 = [2, 23, 14, 45]; //原数组
	/*
	 *使用concat的语法
	 */
	let changeArr = arr.concat(arr1); //操作数组的方法(不会改变原数组,所以需要声明一个变量接收改变后的数据)
	/*
	 *使用es6的语法
	 */
	let changeArr1 = [...arr, ...arr1]; //操作数组的方法(不会改变原数组,所以需要声明一个变量接收改变后的数据)
	console.log(arr, '原数组1')
	console.log(arr1, '原数组2')
	console.log(changeArr, '简单数组操作后的结果,使用concat的语法')
	console.log(changeArr1, '简单数组操作后的结果,使用es6的语法')
	/*
	 *复杂数组操作示例
	 */
	let complexArr = [{
		name: '张三',
		str: [1, 23, 14, 45]
	}, {
		name: '李四',
		str: [1, 3, 4, 5]
	}] //原数组
	let complexArr1 = [{
		name: '王五',
		str: [1, 23, 14, 45]
	}, {
		name: '赵六',
		str: [1, 3, 4, 5]
	}] //原数组
	/*
	 *使用concat的语法
	 */
	let changeChangeArr = complexArr.concat(complexArr1); //操作数组的方法(不会改变原数组,所以需要声明一个变量接收改变后的数据)
	/*
	 *使用es6的语法
	 */
	let changeChangeArr1 = [...complexArr, ...complexArr1]; //操作数组的方法(不会改变原数组,所以需要声明一个变量接收改变后的数据)
	console.log(complexArr, '原数组1')
	console.log(complexArr1, '原数组2')
	console.log(changeChangeArr, '复杂数组操作后的结果,使用concat的语法');
	console.log(changeChangeArr1, '复杂数组操作后的结果,使用es6的语法');
</script>

 

array.slice(开始索引[默认值为0],结束索引[默认值为数组长度:array.length])【截取数组(截取的数组包含开始的索引,不包含结束的索引)】 

<script>
	/*
	 *简单数组操作示例
	 */
	let arr = [1, 23, 14, 45]; //原数组

	let changeArr = arr.slice(1, 2); //操作数组的方法[截取从下标1开始,下标2结束的数据,不包含下标2](不会改变原数组,所以需要声明一个变量接收改变后的数据)
	console.log(arr, '原数组1')
	console.log(changeArr, '简单数组操作后的结果')
	/*
	 *复杂数组操作示例
	 */
	let complexArr = [{
		name: '张三',
		str: [1, 23, 14, 45]
	}, {
		name: '李四',
		str: [1, 3, 4, 5]
	}] //原数组
	let changeChangeArr = complexArr.slice(0, 1); //操作数组的方法(不会改变原数组,所以需要声明一个变量接收改变后的数据)
	console.log(complexArr, '原数组1')
	console.log(changeChangeArr, '复杂数组操作后的结果');
</script>

 

array.indexOf(要查找的数据)【查找元素在数组中的索引(如果有数据,返回第一次出现的索引值,没有该数据,返回-1)】 

<script>
	/*
	 *简单数组操作示例
	 */
	let arr = [1, 23, 14, 45]; //原数组
	let changeArr = arr.indexOf(23); //操作数组的方法(返回元素所在数组位置的索引)(不会改变原数组,所以需要声明一个变量接收改变后的数据)
	let changeArr1 = arr.indexOf(400); //操作数组的方法(不存在该数据,返回-1)(不会改变原数组,所以需要声明一个变量接收改变后的数据)
	console.log(changeArr, '简单数组操作后的结果,数据存在数组中,返回对应的索引')
	console.log(changeArr1, '简单数组操作后的结果,数据不存在数组中,返回-1')
</script>

array.forEach(注解:item[数组每一项的值],index[数组每一项的下标],array[原数组])【遍历数组】的两种写法
       01、array.forEach(function(item,index,array){})
       02、array.forEach((item,index,array)=>{})//推荐此写法 

	<script>
		/*
		 *简单数组操作示例(传统写法)
		 */
		let arr = [1, 23, 14, 45]; //原数组

		let changeArr = arr.forEach(function(item,index,arr){
			console.log(item, '数组每一项的值')
			console.log(index, '数组每一项的值的下标')
			console.log(arr, '原数组')
		}); 
	
		/*
		 *复杂数组操作示例(es6写法)推荐此写法
		 */
		console.log('------------------------------','分割线')
		let complexArr = [{
			name: '张三',
			str: [1, 23, 14, 45]
		}, {
			name: '李四',
			str: [1, 3, 4, 5]
		}] //原数组
		let changeChangeArr = complexArr.forEach((item,index,changeChangeArr)=>{
			console.log(item, '数组每一项的值')
			console.log(index, '数组每一项的值的下标')
			console.log(changeChangeArr, '原数组')
		}); //操作数组的方法(不会改变原数组,所以需要声明一个变量接收改变后的数据)
	
	</script>

 array.map(注解:item[数组每一项的值],index[数组每一项的下标],array[原数组])【遍历数组】的两种写法
       01、array.map(function(item,index,array){})
       02、array.map((item,index,array)=>{})//推荐此写法 

	<script>
		/*
		 *简单数组操作示例(传统写法)
		 */
		let arr = [1, 23, 14, 45]; //原数组

		let changeArr = arr.map(function(item, index, arr) {
			// 映射条件
			return item * 10
		});
		console.log(arr, '原数组')
		console.log(changeArr, '改变后的新数组')
		/*
		 *复杂数组操作示例(es6写法)推荐此写法
		 */
		console.log('------------------------------', '分割线')
		let complexArr = [{
			name: '张三',
			str: [1, 23, 14, 45],
			age: 10,
		}, {
			name: '李四',
			str: [1, 3, 4, 5],
			age: 20,
		}] //原数组
		let changeChangeArr = complexArr.map((item, index, changeChangeArr) => {
			// 映射条件
			return item.age*2
		}); //操作数组的方法(不会改变原数组,所以需要声明一个变量接收改变后的数据)
		console.log(complexArr, '原数组')
		console.log(changeChangeArr, '改变后的新数组')
	</script>

 

 array.filter()【数组过滤】的两种写法
       01、array.filter(function(item,index,array){书写过滤条件})
       02、array.filter((item,index,array)=>{书写过滤条件})//推荐此写法  

	<script>
		/*
		 *简单数组操作示例(传统写法)
		 */
		let arr = [1, 23, 14, 45]; //原数组

		let changeArr = arr.filter(function(item, index, arr) {
			// 映射条件
			return item > 14
		});//操作数组的方法[筛选出大于14的数据](不会改变原数组,所以需要声明一个变量接收改变后的数据)
		console.log(arr, '原数组')
		console.log(changeArr, '改变后的新数组')
		/*
		 *复杂数组操作示例(es6写法)推荐此写法
		 */
		console.log('------------------------------', '分割线')
		let complexArr = [{
			name: '张三',
			str: [1, 23, 14, 45],
			age: 10,
		}, {
			name: '李四',
			str: [1, 3, 4, 5],
			age: 20,
		}] //原数组
		let changeChangeArr = complexArr.filter((item, index, changeChangeArr) => item.age==20); //操作数组的方法[筛选出年龄为20的数据](不会改变原数组,所以需要声明一个变量接收改变后的数据)
		console.log(complexArr, '原数组')
		console.log(changeChangeArr, '改变后的新数组')
	</script>

 

  array.every()【判断是否全部满足条件,必须全部满足条件才返回true】的两种写法
       01、array.every(function(item,index,array){书写查找条件})
       02、array.every((item,index,array)=>{书写查找条件})//推荐此写法  

	<script>
		/*
		 *简单数组操作示例(传统写法)
		 */
		let arr = [1, 23, 14, 45]; //原数组

		let changeArr = arr.every(function(item, index, arr) {
			// 映射条件
			return item >= 1
		}); //操作数组的方法[筛选出大于14的数据](不会改变原数组,所以需要声明一个变量接收改变后的数据)
		console.log(changeArr, '都满足条件时输出的结果')
		/*
		 *复杂数组操作示例(es6写法)推荐此写法
		 */
		console.log('------------------------------', '分割线')
		let complexArr = [{
			name: '张三',
			str: [1, 23, 14, 45],
			age: 10,
		}, {
			name: '李四',
			str: [1, 3, 4, 5],
			age: 20,
		}] //原数组
		let changeChangeArr = complexArr.every((item, index, changeChangeArr) => item.age ==
		20); //操作数组的方法[筛选出年龄为20的数据](不会改变原数组,所以需要声明一个变量接收改变后的数据)
		console.log(changeChangeArr, '只有一个满足条件时输出的结果')
	</script>

 

   array.every()【判断是否全部满足条件,只要有一个满足条件就返回true】的两种写法
       01、array.some(function(item,index,array){书写查找条件})
       02、array.some((item,index,array)=>{书写查找条件})//推荐此写法 

	<script>
		/*
		 *简单数组操作示例(传统写法)
		 */
		let arr = [1, 23, 14, 45]; //原数组

		let changeArr = arr.some(function(item, index, arr) {
			// 映射条件
			return item >= 1
		}); //操作数组的方法[筛选出大于14的数据](不会改变原数组,所以需要声明一个变量接收改变后的数据)
		console.log(changeArr, '都满足条件时输出的结果')
		/*
		 *复杂数组操作示例(es6写法)推荐此写法
		 */
		console.log('------------------------------', '分割线')
		let complexArr = [{
			name: '张三',
			str: [1, 23, 14, 45],
			age: 10,
		}, {
			name: '李四',
			str: [1, 3, 4, 5],
			age: 20,
		}] //原数组
		let changeChangeArr = complexArr.some((item, index, changeChangeArr) => item.age ==20); //操作数组的方法[筛选出年龄为20的数据](不会改变原数组,所以需要声明一个变量接收改变后的数据)
		console.log(changeChangeArr, '只有一个满足条件时输出的结果')
	</script>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/459299.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【算法与数据结构】5 常见的时间复杂度,你知道吗?

欢迎来到爱书不爱输的程序猿的博客, 本博客致力于知识分享&#xff0c;与更多的人进行学习交流 本文收录于算法与数据结构体系专栏,本专栏对于0基础者极为友好,欢迎与我一起完成算法与数据结构的从0到1的跨越 时间复杂度与空间复杂度 一、前情回顾二、常见的时间复杂度1.常见的…

Day954.以增量演进为手段 -遗留系统现代化实战

以增量演进为手段 Hi&#xff0c;我是阿昌&#xff0c;今天学习记录的是关于以增量演进为手段的内容。 遗留系统现代化中的 HOW&#xff0c;也就是第三个原则&#xff0c;以增量演进为手段。 很多团队在一阵大张旗鼓的遗留系统改造后&#xff0c;终于迎来了最终的“梭哈”时…

【线程同步】

一个大佬的笔记&#xff0c;比较详细 一、线程概述 1.线程概述 与进程&#xff08;process&#xff09;类似&#xff0c;线程&#xff08;thread&#xff09;是允许应用程序并发执行多个任务的一种机 制。一个进程可以包含多个线程。同一个程序中的所有线程均会独立执行相同…

supervisor安装

说明 Supervisor翻译过来是监管人&#xff0c;在Linux中Supervisor是一个进程管理工具&#xff0c;当进程中断的时候Supervisor能自动重新启动它。可以运行在各种类Linux/unix的机器上&#xff0c;supervisor就是用Python开发的一套通用的进程管理程序&#xff0c;能将一个普通…

【别再困扰于LeetCode接雨水问题了 | 从暴力法=>动态规划=>单调栈】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

Spring使用总结

Spring框架使用 前言处理事务管理声明式事务&#xff1a;编程式事务&#xff1a; 框架核心常见注解 AOP&#xff08; 面向切面编程&#xff09;切面和通知有哪些类型&#xff1f;切面的类型通知类型AOP实现使用场景 IOC(管理所有的JavaBean)依赖注入&#xff08;DI&#xff09;…

道氏转02,水羊转债,超达转债,晓鸣转债,中旗转债上市价格预测

道氏转02 基本信息 转债名称&#xff1a;道氏转02&#xff0c;评级&#xff1a;AA-&#xff0c;发行规模&#xff1a;26.0亿元。 正股名称&#xff1a;道氏技术&#xff0c;今日收盘价&#xff1a;13.41元&#xff0c;转股价格&#xff1a;15.46元。 当前转股价值 转债面值 / …

大数据三驾马车与hadoop起源

背景介绍 Google成立于1998年是全球最大的搜索引擎公司&#xff0c;主要业务为搜索、云计算、广告技术等&#xff0c;主要利润来自于广告等服务。在21世纪初互联网刚刚兴起&#xff0c;每个企业保存和生产的数据量并不大&#xff0c;已有的技术对数据的保存和处理完全满足业务…

RabbitMQ支持消息的模式

一、简单模式 Simple 二、工作模式 Work 类型&#xff1a;无特点&#xff1a;分发机制 解释&#xff1a;当有多个消费者时&#xff0c;我们的消息会被哪个消费者消费呢&#xff0c;我们又该如何均衡消费者消费信息的多少呢? 主要有两种模式&#xff1a; 2.1 轮询分发&#xf…

2023年江苏专转本成绩查询步骤

2023年江苏专转本成绩查询时间 2023年江苏专转本成绩查询时间预计在5月初&#xff0c;参加考试的考生&#xff0c;可以关注考试院发布的消息。江苏专转本考生可在规定时间内在省教育考试院网&#xff0c;在查询中心页面中输入准考证号和身份证号进行查询&#xff0c;或者拨…

IDEA的BitoAI插件的简单使用指南(包括安装和注册)

注&#xff1a;插件声称使用的是GPT-4模型算法&#xff0c;并且多平台支持&#xff0c;包括vscode、pycharm等&#xff0c;这里只演示idea的安装和使用 1.安装 直接在idea的插件商城中搜索即可 2.注册 使用bito插件需要使用邮箱注册&#xff0c;注册非常简单&#xff0c;只需要…

【一起撸个DL框架】2 节点与计算图的搭建

CSDN个人主页&#xff1a;清风莫追 欢迎关注本专栏&#xff1a;《一起撸个DL框架》 文章目录 2 节点与计算图的搭建 &#x1f352;2.1 简介2.2 设计节点类2.3 节点类的具体实现2.4 搭建计算图进行计算2.5 小结2.6 题外话——节点存储的值 2 节点与计算图的搭建 &#x1f352; …

数据湖Iceberg-存储结构(2)

文章目录 存储结构数据文件 data files表快照 Snapshot清单列表 Manifest list清单文件 Manifest file 数据湖Iceberg-简介(1) 数据湖Iceberg-存储结构(2) 数据湖Iceberg-Hive集成Iceberg(3) 数据湖Iceberg-SparkSQL集成(4) 数据湖Iceberg-FlinkSQL集成(5) 数据湖Iceberg-Flink…

Redis入门到入土(day01)

NoSQL概述 为什么用NoSQL 1、单机MySQL的美好年代 在90年代&#xff0c;一个网站的访问量一般不大&#xff0c;用单个数据库完全可以轻松应付&#xff01; 在那个时候&#xff0c;更多的都是静态网页&#xff0c;动态交互类型的网站不多。 上述架构下&#xff0c;我们来看看…

一文详细介绍查看和启用nginx日志(access.log和error.log),nginx错误日志的安全级别,自定义访问日志中的格式

文章目录 1. 文章引言2. Nginx访问日志(access.log)2.1 简述访问日志2.2 启用Nginx访问日志2.3 自定义访问日志中的格式 3. Nginx错误日志(error.log)3.1 简述错误日志3.2 启用错误日志3.3 Nginx错误日志的安全级别 4. 文末总结 1. 文章引言 我们在实际工作中&#xff0c;经常使…

vue3中如何引入element-icon并使用

简单来说&#xff0c;步骤就是&#xff1a; 安装——注册——按需引入——使用 安装 # NPM $ npm install element-plus/icons-vue # Yarn $ yarn add element-plus/icons-vue # pnpm $ pnpm install element-plus/icons-vue注册 您需要从 element-plus/icons-vue 中导入所有…

【BI软件】零编程构建财务分析模型(行计算模型)

上一讲和大家讲到&#xff0c;自定义SQL是用个性化的开发去满足个性化的需求&#xff0c;而分析模型则是用共性的开发去满足个性化的需求。而分析模型的好处显而易见&#xff0c;通过分析模型来开发报表&#xff0c;更灵活、更高效&#xff0c;而且开发及运维的成本非常低。同时…

C++中引用的基本内容

个人主页&#xff1a;平行线也会相交 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 平行线也会相交 原创 收录于专栏【C之路】 引用&#xff0c;其实没啥特别的&#xff0c;就是起外号&#xff0c;或者说起小名。就比如说孙悟空就有很多外号&#xff0c;如…

基于Python实现个人手机定位分析

TransBigData是一个为交通时空大数据处理、分析和可视化而开发的Python包。本文就来用它实现个人手机定位分析&#xff0c;感兴趣的小伙伴可以了解一下 但其实交通时空大数据并不仅仅局限于交通工具产生的数据&#xff0c;我们的日常生活中也会产生大量的数据。比如我们的手机…

前端 百度地图绘制路线加上图片

使用百度官方示例的方法根据起终点经纬度查询驾车路线但是只是一个线路 <template><div class"transportInfo"><div id"mapcontainer" class"map">11</div><div class"collapse"><el-collapse v-mo…