Array 新手

JavaScript 数组

1.数组是引用类型。
2.数组是对象。
3.数组作用:使用单独的变量名来存储一系列的值。

// 方式一 定义数组 
let arr = new Array();

// 方式二 定义数组 (推荐) 
let arr2 = [];

// 1.判断数组是否为对象类型  typeof
let arrayType  = typeof arr2;
// 结果 : object
console.log(arrayType);  

// 2.获取数组长度 length
let long = arr2.length;
// 结果 : 0
console.log(long)

// 3.获取数组 构造方法
console.log(Array.constructor);

// 4.设置数组 原型方法和属性
Array.prototype.num = function(){
	return 10
};
// 结果: 10
console.log(arr2.num());

// 5.给数组赋值
let arr3 = [10, 20, 30];  // 直接赋值
arr3[3] = 40; // 下标赋值
console.log(arr3);

// 6.获取数组的值
let subscript = arr3[0]; // 通过下标取值
for(var i = 0; i < arr3.length; i++ ) { 
	
	console.log(arr3[i]); // for 循环取值
} 
arr3.forEach(function(item,index){
	console.log(item); // forEach 循环取值 item: 值 , index: 下标
});


// 7.删除数组的值
delete arr3[1];
// 结果:[10,30,40]
console.log(arr3); 


// 8.使用数组方法
let arr4 = [1, 2, 3];
let arr5 = [20, 21, 23];
// 向数组后面追加一个值
arr4.push(4); 
// 结果 :[1, 2, 3, 4]
console.log(arr4); 

// 向数组前面追加一个值
arr4.unshift(0);
// 结果 :[0, 1, 2, 3, 4]
console.log(arr4); 

// 数组合并 ( 得到新的数组 )
let newArray = arr4.concat(arr5);
// 结果:[0, 1, 2, 3, 4, 20, 21, 23]
console.log(newArray);

// 删除数组最后一个的值
let deleteLeastArray = arr4.pop();
// 结果:[0, 1, 2, 3]
console.log(arr4)

// 删除数组第一个的值
let deleteFirshArray = arr4.shift();
// 结果:[1, 2, 3]
console.log(arr4)

// 删除数组其中的一项 splice('要删除的元素下标','要删除几个元素','要添加元素')
arr4.splice(0,1);
// 结果:[2, 3]
console.log(arr4);

// 添加数组的值
arr4.splice(1,0,'添加了我');
// 结果:[2, '添加了我', 3]
console.log(arr4);

// 删除原来的值,然后添加新的值
arr4.splice(1,1,'添加了我2');
// 结果:[2, '添加了我2', 3]
console.log(arr4);

// 数组截取  slice('开始的下标','结束的下标')
let newArray2 = arr4.slice(1,2);
// 结果:['添加了我2']
console.log(newArray2);

// 颠倒数组中元素
console.log(arr5.reverse())

// 数组排序
console.log(arr5.sort())

// 数组转字符串 20,21,23
console.log(arr5.toString());
console.log(arr4.toLocaleString());
console.log(arr3.join(','));

// 数组的查找
let arr6 = [ 1, 2, 3, 4 ];
// 返回每次函数调用的结果数组
let value = arr6.map(function(item,index){
	return item;
});
console.log(value);

// 只要有一项成立 true  否则 false
let value2  = arr6.some(function(item,index){
	return item == 3;
});
console.log(value2);

// 数组过滤符合的返回
let value3  = arr6.filter(function(item,index){
	return item == 3;
});
console.log(value3);

// 数组的值全部成立 true 否则 false
let value4 = arr6.every(function(item,index){
	return item > 1;
});
console.log(value4);

// 从数组前面开始查找, 找到返回数组下标, 否则 -1
let value5 = arr6.indexOf(function(item,index){
	return item == 2;
});
console.log(value5);

// 从数组后面开始查找
let value6 = arr6.lastIndexOf(function(item,index){
	console.log(item);
	return item == 3;
});
console.log(value6);

在这里插入图片描述

**案例 **

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>JavaScript-Array + Vue3</title>
	</head>
	<!-- css 样式 -->
	<link rel="stylesheet" type="text/css" href="css/bootstrap.min.css">
	<style type="text/css">
		[v-cloak] {
			display: none;
		}
		.input-group-text{
			cursor: pointer;
		}
		.mr{
			margin-right: 10px;
		}
	</style>
	
	<!-- html 标签 -->
	<body>
		<div id="app" v-cloak>
		  <!-- 数组的 增删改查 -->
			<div class="container">
				<!-- row -->
				<div class="row">
				  <div class="col-sm-11">
						<div class="input-group mb-3 mt-3">
							<input v-model="input" type="text" class="form-control" placeholder="请输入用户名" id="demo">
							<span  @click="onSearch" class="input-group-text">搜索</span>
						</div>
					</div>
				  <div class="col-sm-1">
						<button @click="onOperation({}, 0)" type="button" class="btn btn-primary mb-3 mt-3">添加</button>
					</div>
				</div>
				<!-- end row -->
				<!-- table -->
				<table class="table table-hover table-striped">
					<thead>
						<tr>
							<th>id</th>
							<th>用户名</th>
							<th>年龄</th>
							<th>备注</th>
							<th>操作</th>
						</tr>
					</thead>
					<tbody>
						<tr v-for="(item,index) in searchArray" :key="item.id" class="grid">
							<td>{{ item.id }}</td>
							<td>{{ item.username }}</td>
							<td>{{ item.age }}</td>
							<td>{{ item.note }}</td>
							<td>
								<button @click="onOperation(item, 1)" type="button" class="btn btn-primary btn-sm mr">修改</button>
								<button @click="onDelete(index)" type="button" class="btn btn-danger btn-sm">删除</button>
							</td>
						</tr>
					</tbody>
				</table>
				<!-- end table -->
				<!-- row -->
				<div class="row" v-if="showForm">
					<div class="col-sm-3">
						<input v-model="selectData.username" type="text" class="form-control" placeholder="请输入用户名">
					</div>
					<div class="col-sm-3">
						<input v-model="selectData.age" type="text" class="form-control" placeholder="请输入年龄">
					</div>
					<div class="col-sm-4">
						<input v-model="selectData.note" type="text" class="form-control" placeholder="请输入备注">
					</div>
					<div class="col-sm-2">
						<button @click="onConfirm"  type="button" class="btn btn-success mr">确定</button>
						<button @click="onClose" type="button" class="btn btn-danger">关闭</button>
					</div>
				</div>
				<!-- end row -->
			</div>
		</div>
	</body>
	<!--  -->
</html>

<!-- JavaScript -->
<!-- <script src="js/array.js"></script> -->
<script src="js/vue.global.js"></script>
<script type="module">
	// 模拟数据
	let dataBase = [
		{ id: 1, username: '张三', age: 20, note: '好的好的哈' },
		{ id: 2, username: '李四', age: 23, note: '好的好的哈' }
	]
	
	let app = {
		data(){
			return {
				searchArray: dataBase,
				input: '',
				showForm: false,
				selectData: {
					id: '',
					username: '',
					age: '',
					note: ''
				},
				type: 0,
			}
		},
    methods: {
		   onSearch(){
				let tArray = dataBase.filter((item,index)=>{
					return item.username == this.input;
				});
		        if(this.input == ''){
					this.searchArray = dataBase;
				}else{
				   this.searchArray = tArray;
			    }
			},
			onOperation(item = {}, type = 0){
				// 0:添加 , 1:修改
				if(type == 1){
					this.selectData = JSON.parse(JSON.stringify(item));
				}
				this.type = type;
				this.showForm = true;
			},
			
			// 删除数据
			onDelete(index){
				this.searchArray.splice(index,1);
				this.onClose();
			},
			// 关闭
			onClose(){
				this.selectData = {
					id: '',
					username: '',
					age: '',
					note: ''
				}
				this.showForm = false;
			},
			// 确认
			onConfirm(){
				if(this.type == 0){
					this.selectData.id = this.searchArray[this.searchArray.length -1].id + 1;
					this.searchArray.push(this.selectData);
				}else{
					this.searchArray.forEach((item,index) => {
						if(item.id == this.selectData.id){
							this.searchArray.splice(index,1,this.selectData);
						}
					});
				}
				this.onClose();
			}
		}
	}
	Vue.createApp(app).mount('#app');
</script>

效果图

在这里插入图片描述

源码下载地址

链接:https://pan.baidu.com/s/1RWFQQKoKdnPCrrfnsvtn9Q
提取码:8888

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值