多维数组
多维数组可以看成是数组的数组(数组里面包含数组),比如二维数组就是一个特殊的一维数组,
其每一个元素都是一个一维数组
let arr1 = ['a', 'b', 'c'];
let arr2 = [1, 2, 3];
let arr3 = [arr1, arr2];//arr3 = [['a', 'b', 'c'],[1, 2, 3]]
console.log(arr3[0][2]); //c
表示访问的是arr3的索引为0的数组里面索引为2的数组
`例:
数组实现登录
let user = [
['zhangsan', '123'],
['lisi', '456']
]
console.log(`请输入用户名:`);
let name = readline.question();
console.log(`请输入密码:`);
let psw = readline.question();
let isFind = false; //定义变量 没找到
for (let i = 0; i <= user.length - 1; i++) { //users[i]
if (name == user[i][0] && psw == user[i][1]) { //匹配上
console.log(`登录成功`);
isFind = true; //找到用户,循环还是会继续,直至结束,但是只会打印出匹配成功的结果
}
}
if (!isFind) {
console.log(`输入有误`);
}但是当上面循环结束都没匹配到,就执行下面的if输出内容
数组的方法
后面代()就是方法,没有的就是属性
栈方法push()和pop()
push():在末尾添加
pop():删除并返回末尾项
arr.pop(item1, iyem2);
let arr = [1, 2, 3];
arr pop();
console.log(arr); //[1,2]
shift()删除第一项
arr.shift();
let arr = [1, 2, 3];
arr.shift();
console.log(arr); //[2,3]
unshift()从起始添加
arr.unshift(item1, iyem2);
let arr = [1, 2, 3];
arr.unshift('a');
console.log(arr); //['a',1,2,3]
slice()截取
在数组中截取相应的元素,并返回一个新数组,原数组不更改
截取
arr.slice(startIndex, endIndex)
let arr = [1, 2, 3, 4, 5];
let result = arr.slice(2); //如果只有一个参数,表示开始位置一直到最后
console.log(result); //[3,4,5]
let arr = [1, 2, 3, 4, 5];
let result = arr.slice(2, 4); //如果有两个参数,表示一个区间,但是结束参数不是传入的那一个,而是-1
console.log(result); //[3,4]
splice()剪接
数组的万能方法
1、增(插入元素)
2、删(删除元素)
3、改(替换元素)
arr.splice(starIndex, deleteCount, addItem1, addItem2)
let arr = [1, 2, 3];
arr.splice(0, 1); //表示下标从0开始删除1个元素
console.log(arr); //[2,3]
let arr = [1, 2, 3];
arr.splice(0, 1, 'a', 'b'); //表示下标从0开始删除1个元素,然后添加两个元素
console.log(arr); //[2,3,'a', 'b']
let arr = [1, 2, 3];
arr.splice(0, 0, 'a', 'b'); //表示下标从0开始删除0个元素,然后添加两个元素
console.log(arr); //[1,2,3,'a', 'b']
let arr = [1, 2, 3];
arr.splice(1, 1, 'a'); //表示下标从1开始删除1个元素,然后添加一个元素==替换
console.log(arr); //[1,'a',3,]
数组排序
reverse():反转数据内容:
let arr = [2, 1, 3]
arr.reverse((a, b) => a - b); //升序 两个
arr.reverse((a, b) => b - a); //降序
sort():a-b为升序,b-a为倒叙:
let arr = [2, 1, 3]
//arr.sort(callback);
arr.sort((a, b) => a - b); //升序 两个数ab,a-b为升序,b-a为倒叙
arr.sort((a, b) => b - a); //降序
concat()连接方法
当前数组中所有的项目创建一个新数组,将收到的参数添加到这个数组的末尾,并返回一个新数组,原数组不更改
与push的区别就是一个动了原来的数组,而concat是没有动原数组,而是返回一个新的数组
拼接两个数组
let arr1 = [1, 2, 3];
let arr2 = ['a', 'b', 'c'];
let arr3 = arr1.concat(arr2);
console.log(arr3); //[1,2,3,'a', 'b', 'c']
原数组上添加
let arr1 = [1, 2, 3];
let arr2 = ['a', 'b', 'c'];
let arr3 = arr1.concat('A,'B');
console.log(arr3); //[1,2,3,'A', 'B']
数组的拷贝
let arr1 = [1, 2, 3];
let arr3 = arr1.concat();//arr3 = [1, 2, 3]
console.log(arr3 == arr1); //false 数组属于复杂性数据类型,按址比较,他们的址不相等
位置方法(返回值为索引号)
indexOf():从数组头部开始查找,返回元素的索引号,找不到返回-1,全等比较 ,不会进行数据类型的转换
lastIndexOf():从数组尾部开始查找
位置查找
let arr = ['a', 'b', 'c', 'd', 'e', 'c'];
console.log(arr.indexOf('c')); //2
console.log(arr.lastIndexOf('c')); //5
console.log(arr.indexOf('o')); //-1
数组和字符串的相互转换
join() 数组转字符串
接收一个参数:字符串的分隔符,将数组中的元素依次取出拼成一个字符串并返回结果
let arr = [1, 2, 3, 4]
console.log(arr.join('-')); //1-2-3-4
let arr = [1, 2, 3, 4]
console.log(arr.join('/')); // 1/ 2 / 3 / 4
split() 字符串转数组
接收一个参数:指定的分隔符,转出来的数组中不会包含该分隔符
let str = "hello world"
console.log(arr.split(' ')); //["hello","world"] 把空格变为了分隔符
console.log(arr.split('o')); //["hell","w","rld"] 把o变为了分隔符
位置查找
includes() (返回值为布尔值)
接收一个参数:元素返回布尔值,进行全等匹配
let arr = [1, 2, 3];
console.log(arr.includes('1')); //false
console.log(arr.includes(1)); //ture
习题
// 将1 - 100 所有能被5整除的数, 以数组形式打印
let i = 1;
let arr = [];
for (i = 1; i <= 100; i++) {
if (i % 5 == 0) {
// arr.push(i)//末尾添加
// arr.unshift(i)//起始添加
arr.splice(0, 0, i) //剪接
arr.sort((a, b) => a - b);
//arr = arr.concat(i); //拼接
}
}
console.log(arr);
let users = [
['zhangsan', '123'],
['lisi', '456']
];
let flag = true;
while (true) {
console.log(`请输入: 1.登录 2.注册 3.退出`);
let opt = readline.question()-0;
switch (opt) {
case 1:
console.log(`请输入账号:`);
let username = readline.question();
console.log(`请输入密码`);
let password = readline.question();
for(let i = 0;i < users.length;i++){
if(username == users[i][0] && password == users[i][1]){
console.log(`登陆成功`);
}
}
break;
case 2:
console.log(`请输入注册账号`);
let newUsername = readline.question();
// arr.push(newUsername);
console.log(`请输入注册密码`);
let newPassword = readline.question();
users.push([newUsername,newPassword]);
console.log(users);
for(let j = 0;j< users.length;j++){
if(newUsername == users[j][0]){
console.log(`用户重名`);
}
}
break;
case 3:
flag = false;
break;
}
}