JavaScript基础-数组

多维数组

多维数组可以看成是数组的数组(数组里面包含数组),比如二维数组就是一个特殊的一维数组,

其每一个元素都是一个一维数组

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;
    }
}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值