第三章.数组
一、数组的创建方式
// 第一种方式:new创建
//1.数组的创建
var fruits = new Array(); //开辟六个空间
// 2.赋值
fruits[0]="香蕉";
fruits[1]="苹果";
// 3.调用变量
console.log(fruits);
console.log(fruits[0]);
console.log(fruits[1]);
// 第二种方式 :字面量方式
var student = ["王峰", "李易峰", "薛之谦", "张杰"];
console.log(student[0]);
console.log(student[1]);
// 数组的长度 长度的值-1等于最大下标
console.log(student.length);
// 如果一个元素不在数组中,通过indexof()方法返回的是-1
// indexOf()可以判断某个值是否可以在数组中
let j=student.indexOf("李四");
console.log(j);
二、数组的增,删,改,查
1.(数组的添加)
// 数组的操作:增
var numS = [100, 200, 300, 400, 500, 600];
// 1.增加元素--在元素末尾添加一个元素
numS[6] = 9999;
// 通过下标
numS[numS.length] = 8888;
console.log(numS);
//2. 通过数组的方法push()
var newenght = numS.push(777);
console.log(numS);
console.log(newlenght);
//3.向前面添加元素unshift()方法
newlenght = nums.unshift(8488);
console.log(numS);
console.log(newlenght);
//4.向中间插入一个元素 ()方法
//向元素的第三个位置添加32
numS.splice(3, 0, 32);
console.log(numS);
//arr:表示操作的数组,
//index:表示插入的位置
//newNum:插入的元素(数字)
//myInsert:方法名
function myInsert(arr, index, newNum) {
// 1.找到位置
// 2.位置之前的元素不动,之后的元素后移
for (var i = arr.length - 1; i >= index; i--) {
arr[i + 1] = arr[i];
}
// 3.插入新的元素
arr[index] = newNum;
}
var fruits = ["apple", "orange", "banana", "pear"];
// 向orange后面加kiwi
myInsert(fruits, 2, "kiwi");
console.log(fruits);
// 向banana后面加lemon
myInsert(fruits,4,"lemon");
console.log(fruits);
2.(数组的删除)
// 定义数组
var numS=[100,200,300,400,500];
// 删除元素
//1. delete numS[1];
console.log(numS);
console.log(numS[1]);
//2.删除最后一个元素pop()方法
numS.pop();
console.log(numS);
//删除最前面的元素shift()方法
numS.shift();
console.log(numS);
//删除指定元素 splice括号里面的数表示第几个位置删除几个元素
numS.splice(1,1);
console.log(numS);
3.(数组的修改)
var names = ["tom", "jerry", "lucy", "jackson"];
//修改
// 1.修改第二个名字薛之谦 ,直接用下标修改
names[1] = "薛之谦";
console.log(names);
// 2.使用splice()方法,将第三个名字改成张杰
names.splice(2, 1, "张杰");
console.log(names);
4.数组的查询
var dogs = ["金毛", "二哈", "泰迦", "萨摩", "阿拉斯加", "中华田园犬"];
//1.查询指定元素
console.log(dogs[0]);
// 2.查询全部元素并打印
console.log(dogs);
// 使用for循环对数组进行遍历操作
for (var i = 0; i < dogs.length; i++) {
dogs[i] += "狗";
console.log(dogs[i]);
}
// 3.找出二哈的索引下标
var index = dogs.indexOf("二哈");
console.log(index);
// 4.最大最小值
var numS = [2, 33, 14, 66, 122, 38 ,33];
var max = numS[0];
var min = numS[0];
for (var j = 0; j < numS.length; j++) {
if (max < numS[j]) {
max = numS[j];
}
if (min > numS[j]) {
min = numS[j];
}
}
console.log(max, min);
//5.查询是否包含指定的值
let isExists =numS.includes(66);
console.log(isExists);
//6.元素最后出现的位置
let lastIndex=numS.lastIndexOf(33);
console.log(lastIndex);
// 7.另一种循环for-in 针对于集合的一种循环迭代方式
//一下是这种方式的简写for (var k=0;k<numS.lenght;k++)
for(var k in numS){
console.log(numS[k]);
}
三、数组的迭代
var numS = [11, 22, 33, 44, 55, 66, 77, 88, 99];
var numS2 = [];
var max = [];
//1.forEach() 高阶函数
//利用forEach()打印数组的元素
// 2.复制新数组和nums2里面的值相同(真克隆)
// item 表示数组的个数 index表示数组的下标
numS.forEach(function (item, index) {
console.log(item, index);
// 将numS的元素复制给numS2
numS2[index] = item;
//找最大的元素
if (max < item) {
max = item;
}
})
console.log(numS);
console.log(numS2);
console.log(max);
//假克隆(引用传递)
var numS3 = numS;
console.log(numS3);
numS3[0] = 8080;
console.log(numS);
四、数组的操作杂项
var chars = ["a", "b", "c", "d"];
// 1.数组元素的倒序输出
for (var i = chars.length - 1; i >= 0; i--) {
console.log(chars[i]);
}
// 2.数组元素的反转用reverse()方法
chars.reverse();
console.log(chars);
// 3.把数组的所有元素放入一个字符串 join(参数) 参数:连接数组元素的连接符
var arrStr = chars.join('');
console.log(arrStr);
// 4.把两个或者更多的数据组连接用concat()方法
var fruits = ["banana", "strawberry", "kiwi", "apple", "lemon"];
var names = ["tom", "jerry", "lucy"];
var sports = ["足球", "篮球", "排球"];
var bigArr = fruits.concat(names).concat(sports);
console.log(bigArr);
五、数组的排序
var numS = [33, 13, 24, 3, 16, 99, 123, 88];
console.log(numS);
// 利用sort()方法排序
//默认是正序
numS.sort(function (a, b) { return a - b });
console.log(numS);
//倒序排序
numS.sort(function (a, b) { return b - a });
console.log(numS);
//自己写一个冒泡排序
function mySort(arr) {
// 外层循环比较轮次 length-1
for (var i = 0; i < arr.length - 1; i++) {
// 内层循环表示每轮比较的次数 length-1-i
for (var j = 0; j < arr.length - 1 - i; j++) {
// 比较相邻的两个数,前一个数大于后一个数
var temp;
if (arr[j] > arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
var numS2 = [33, 13, 24, 3, 16, 99, 123, 88];
mySort(numS2);
console.log(numS2);
foreach()回调函数
案列:查询a出现的次数
var arr = ["b", "a", "c", "a", "g", "j", "a", "c", "b"];
var count = 0;
// forEach对每个元素都执行一次回调函数
arr.forEach(function (item, index) {
if (item === "a") {
count++;
}
})
console.log(count);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理