百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术分类 > 正文

JavaScript之数组

ztj100 2024-11-25 00:38 12 浏览 0 评论


来源:升学就业帮讲师——肖云锐

1. 数组的声明和赋值

方式一: new Array()构造函数方法

// 1. 使用构造函数创建数组对象
// 创建了一个空数组var arr = new Array();
// 创建了一个数组,里面存放了3个字符串
var arr = new Array('zs', 'ls', 'ww');
// 创建了一个数组,里面存放了4个数字
var arr = new Array(1, 2, 3, 4);

方式二: 字面量方式

// 2. 使用字面量创建数组对象
var arr = [1, 2, 3];
// 获取数组中元素的个数
console.log(arr.length);

注意事项:

1. 定义空数组的方式

var arr1 = [];

2. 定义一个数组可以存入不同的数据类型. 但是一般不建议这样使用.

var arr3 = [25,true,'abc'];

3. 访问数组的元素通过索引,索引从开始

var arr6 = [];
arr[0] = 10;
arr[1] = 20;
arr[2] = 30;
console.log(arr6);

4. js中数组的下标是可以不连续的,如果不连续默认补充empty

var arr6 = [];
arr6[0] = 10;
arr6[1] = 20;
arr6[2] = 30;
console.log(arr6);
arr6[4] = 50;
console.log(arr6)

执行结果如下图所示:

5. 数组的扩容和缩容

var arr = [1, 1.2, new Date(), false, "呵呵"];
console.log("前:" + arr);
// 数组的扩容arr.length = 10;
// 数组的缩小
//arr.length = 3;
console.log("后:" + arr);

6. 清空数组

// 方式1 推荐
arr = [];
// 方式2
arr.length = 0;
// 方式3
arr.splice(0, arr.length);

2. 数组的遍历

方式一:for循环,也是最常见的

for (let i = 0; i < arr.length; i++) {
console.log(arr[i])
}

方式二:for......in 遍历数组

for(let item in arr){
console.log(arr[item])
}

方式三: foreach遍历数组


arr.forEach(function(item, index){ 
   console.log(item + "=" + index);
});

3. 数组的常用方法

数组常用的一些方法:

首尾数据操作

push() //在数组末尾添加一个或多个元素,并返回数组操作后的长度
pop() //删除数组最后一项,返回删除项
shift() //删除数组第一项,返回删除项
unshift() //在数组开头添加一个或多个元素,并返回数组的新长度

合并和拆分

concat()
// 将两个数组合并成一个新的数组,原数组不受影响。
// 参数位置可以是一个数组字面量、数组变量、零散的值。
slice(start,end)
// 从当前数组中截取一个新的数组,不影响原来的数组,返回一个新的数组,
// 包含从 start 到 end (不包括该元素)的元素。
// 参数区分正负,正值表示下标位置,负值表示从后面往前数第几个位置,
// 参数可以只传递一个,表示从开始位置截取到字符串结尾。

删除、插入、替换

splice(index,howmany,element1,element2,……)
//用于插入、删除或替换数组的元素
//index:删除元素的开始位置
//howmany:删除元素的个数,可以是0
//element1,element2:要替换的新的数据。

位置方法

indexOf() //查找数据在数组中最先出现的下标
lastIndexOf() //查找数据在数组中最后一次出现的下标
//如果没找到返回-1

排序和倒序

reverse() //将数组完全颠倒,第一项变成最后一项,最后一项变成第一项。
sort(); //默认根据字符编码顺序,从小到大排序
//如果想要根据数值大小进行排序,必须添加sort的比较函数参数。
//该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,根据a和b的关系作为判断条件,返回值根据条件分为三个分支,正数、负数、0:
//返回值是负数-1:a排在b前面。
//返回值是整数1:a排在b后面。
//返回值是0:a和b的顺序保持不变。
//人为能控制的是判断条件。

转字符串方法

// 将数组的所有元素连接到一个字符串中。
join() //通过参数作为连字符将数组中的每一项用连字符连成一个完整的字符串

迭代方法

//不会修改原数组(可选) HTML5新增
every()、filter()、forEach()、map()、some()

代码示例

<script>
// 创建数组
var arr = [1,2,3,4,5];
// 转字符串
console.log(arr.toString());
// 返回数组对象本身数据
console.log(arr.valueOf());

// 首尾操作方法
// push()在结尾推入一个或多个数据
console.log(arr);
console.log(arr.push(7,8,9));
console.log(arr);
// pop()在结尾删除最后一项数据,并返回删除的这个数据
console.log(arr.pop());
console.log(arr);

// unshift()在开始添加一个或多个数据
console.log(arr.unshift(-1,0));
console.log(arr);
// shift()删除第一项数据,并且返回删除的数据
console.log(arr.shift());
console.log(arr);

// 案例:将数组最后一项移动到第一项,其他项依次往后移动
var a = arr.pop();
console.log(a);
arr.unshift(a);
arr.unshift(arr.pop());
console.log(arr);
arr.unshift(arr.pop());
console.log(arr);
// 案例:将数组第一项移动到最后一项,其他项依次往前移动 
arr.push(arr.shift());
console.log(arr);

// 合并和拆分
// concat()连接两个数组,生成一个新的数组
var arr2 = ["a","b","c"];
var arr3 = arr.concat(arr2);
var arr3 = arr.concat([6,7,8]);
var arr3 = arr.concat(6,7,8,[9,10]);
console.log(arr3);
console.log(arr2);
console.log(arr);
// slice(start,end),截取数组中从start开始到end结束的位置的片段,组成一个新的数组对象,包含开始不包含结束的
var arr = [0,1,2,3,4,5,6,7,8,3,2,1];
var arr1 = arr.slice(2,5);
var arr1 = arr.slice(-5,-2);
var arr1 = arr.slice(2);
var arr1 = arr.slice(5,2);
console.log(arr);
console.log(arr1);

// splice()删除、替换、插入
// 传两个参数,第一个参数是删除开始的下标,第二个参数是删除数据的长度
console.log(arr.splice(3,3));
console.log(arr);
// 传入3个或以上的参数,第三个及以后的参数是要进行替换的数据
console.log(arr.splice(3,3,"haha",true));
console.log(arr);
// 插入是替换的一种变形,第二个参数长度为0
console.log(arr.splice(3,0,"haha",true));
console.log(arr);

// 位置方法
// indexOf()返回第一次出现的下标
lastIndexOf()返回最后一次出现的下标
console.log(arr.indexOf(3));
console.log(arr.lastIndexOf(3));
console.log(arr.lastIndexOf(10));
// 排序
// 倒序
var arr = [0,1,2,3,4,5,6,7,8];
arr.reverse();
console.log(arr);
// sort()排序,默认转换为字符串,比较字符编码顺序
var arr = [2,19,true,undefined,"haha"];
var arr = [2,19,23,9,45,87];
arr.sort();
console.log(arr);

// 添加比较函数比较数值大小
arr.sort(function(a,b){
// 内部返回值决定a和b接收参数的位置
if(a > b){
return -1; //a在b前面
}else if(a < b){
return 1; //a在b后面
}else{
return 0; //a、b位置不变
}
});
arr.sort(function(a,b){
// 内部返回值决定a和b接收参数的位置
return b - a;
});
console.log(arr);

// 转字符串
var arr = [1,2,3,4,5];
var str = arr.join("");
console.log(str);

// 迭代方法
var arr = [3,4,19,34,23,76];
var a = arr.every(function(ele){
return ele < 50;
});
console.log(a);
var newArr = arr.filter(function(ele){
return ele < 50;
});
console.log(newArr);

// 清空数组的方法
var arr = [3,4,19,34,23,76];
// 方法一:
arr = [];
// 方法二:
arr.length = 0;
// 方法三:
arr.splice(0,arr.length);
</script>

相关推荐

Vue 技术栈(全家桶)(vue technology)

Vue技术栈(全家桶)尚硅谷前端研究院第1章:Vue核心Vue简介官网英文官网:https://vuejs.org/中文官网:https://cn.vuejs.org/...

vue 基础- nextTick 的使用场景(vue的nexttick这个方法有什么用)

前言《vue基础》系列是再次回炉vue记的笔记,除了官网那部分知识点外,还会加入自己的一些理解。(里面会有部分和官网相同的文案,有经验的同学择感兴趣的阅读)在开发时,是不是遇到过这样的场景,响应...

vue3 组件初始化流程(vue组件初始化顺序)

学习完成响应式系统后,咋们来看看vue3组件的初始化流程既然是看vue组件的初始化流程,咋们先来创建基本的代码,跑跑流程(在app.vue中写入以下内容,来跑流程)...

vue3优雅的设置element-plus的table自动滚动到底部

场景我是需要在table最后添加一行数据,然后把滚动条滚动到最后。查网上的解决方案都是读取html结构,暴力的去获取,虽能解决问题,但是不喜欢这种打补丁的解决方案,我想着官方应该有相关的定义,于是就去...

Vue3为什么推荐使用ref而不是reactive

为什么推荐使用ref而不是reactivereactive本身具有很大局限性导致使用过程需要额外注意,如果忽视这些问题将对开发造成不小的麻烦;ref更像是vue2时代optionapi的data的替...

9、echarts 在 vue 中怎么引用?(必会)

首先我们初始化一个vue项目,执行vueinitwebpackechart,接着我们进入初始化的项目下。安装echarts,npminstallecharts-S//或...

无所不能,将 Vue 渲染到嵌入式液晶屏

该文章转载自公众号@前端时刻,https://mp.weixin.qq.com/s/WDHW36zhfNFVFVv4jO2vrA前言...

vue-element-admin 增删改查(五)(vue-element-admin怎么用)

此篇幅比较长,涉及到的小知识点也比较多,一定要耐心看完,记住学东西没有耐心可不行!!!一、添加和修改注:添加和编辑用到了同一个组件,也就是此篇文章你能学会如何封装组件及引用组件;第二能学会async和...

最全的 Vue 面试题+详解答案(vue面试题知识点大全)

前言本文整理了...

基于 vue3.0 桌面端朋友圈/登录验证+60s倒计时

今天给大家分享的是Vue3聊天实例中的朋友圈的实现及登录验证和倒计时操作。先上效果图这个是最新开发的vue3.x网页端聊天项目中的朋友圈模块。用到了ElementPlus...

不来看看这些 VUE 的生命周期钩子函数?| 原力计划

作者|huangfuyk责编|王晓曼出品|CSDN博客VUE的生命周期钩子函数:就是指在一个组件从创建到销毁的过程自动执行的函数,包含组件的变化。可以分为:创建、挂载、更新、销毁四个模块...

Vue3.5正式上线,父传子props用法更丝滑简洁

前言Vue3.5在2024-09-03正式上线,目前在Vue官网显最新版本已经是Vue3.5,其中主要包含了几个小改动,我留意到日常最常用的改动就是props了,肯定是用Vue3的人必用的,所以针对性...

Vue 3 生命周期完整指南(vue生命周期及使用)

Vue2和Vue3中的生命周期钩子的工作方式非常相似,我们仍然可以访问相同的钩子,也希望将它们能用于相同的场景。...

救命!这 10 个 Vue3 技巧藏太深了!性能翻倍 + 摸鱼神器全揭秘

前端打工人集合!是不是经常遇到这些崩溃瞬间:Vue3项目越写越卡,组件通信像走迷宫,复杂逻辑写得脑壳疼?别慌!作为在一线摸爬滚打多年的老前端,今天直接甩出10个超实用的Vue3实战技巧,手把...

怎么在 vue 中使用 form 清除校验状态?

在Vue中使用表单验证时,经常需要清除表单的校验状态。下面我将介绍一些方法来清除表单的校验状态。1.使用this.$refs...

取消回复欢迎 发表评论: