JS——数组
数组:
- 声明可跨多行
- 不要再最后一个元素后面写逗号,可能存在跨浏览器兼容性问题。
- 访问方式和python中的列表一样
- 是特殊的对象,使用typeof时,会返回“object”
- 数组是特殊类型的对象。
- 可以在数组中保存对象,函数,数组也可以。
var array-name = [item1, item2, ...];
var cars = [
"Saab",
"Volvo",
"BMW" //这里请不要使用逗号
];
数组访问:
var name = cars[0];
遍历数组元素:
fruits = ["Banana", "Orange", "Apple", "Mango"];
fLen = fruits.length;
text = "<ul>";
for (i = 0; i < fLen; i++) {
text += "<li>" + fruits[i] + "</li>";
}
也可使用foreach函数
var fruits, text;
fruits = ["Banana", "Orange", "Apple", "Mango"];
text = "<ul>";
fruits.forEach(myFunction);
text += "</ul>";
function myFunction(value) {
text += "<li>" + value + "</li>";
}
添加元素:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.push("Lemon"); // 向 fruits 添加一个新元素 (Lemon)
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits[fruits.length] = "Lemon"; // 向 fruits 添加一个新元素 (Lemon)
Const
- 用const定义的数组不能重新赋值
- 它不定义常量数组,它定义的是对数组的常量引用。
- 但任然可以更改常量数组的元素
- const变量在声明时,必须赋值
- 是块级作用域
- 不允许在同一作用域或同一块中将数组重新命名和重新赋值给const
- 但允许另一个作用域或块中进行const重新命名数组。
const cars = ["Saab", "Volvo", "BMW"];
cars = ["Toyota", "Volvo", "Audi"]; // ERROR
// 您可以创建常量数组:
const cars = ["Saab", "Volvo", "BMW"];
// 您可以更改元素:
cars[0] = "Toyota";
// 您可以添加元素:
cars.push("Audi");
方法:
-
Array.isArray(判断是否为数组)
Array.isArray(fruits); // 返回 true
-
join(合并)
将所有数组元素结合为一个字符串
var fruits = ["Banana", "Orange","Apple", "Mango"];
document.getElementById("demo").innerHTML = fruits.join(" * ");
//Banana * Orange * Apple * Mango
-
pop(删除末位)
从最后一个位开始删除,返回删除的值。
var fruits = ["Banana", "Orange", "Apple", "Mango"];
var x = fruits.pop(); // x 的值是 "Mango"
-
shift(删除首个)
删除首个数组元素,并把所有其他元素“移位”到更低的索引。
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.shift(); // 从 fruits 删除第一个元素 "Banana"
-
push(向后添加)
插入到最后一个位置中,并返回整体个数。
var fruits = ["Banana", "Orange", "Apple", "Mango"];
var x = fruits.push("Kiwi"); // x 的值是 5
-
unshift(向前添加)
向数组0位置添加元素,并向后推原有元素。
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.unshift("Lemon"); // 向 fruits 添加新元素 "Lemon"
-
splice(拼接)
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.splice(2, 0, "Lemon", "Kiwi");
//第一个参数(2)定义了应添加新元素的位置(拼接)。
//第二个参数(0)定义应删除多少元素。
//其余参数(“Lemon”,“Kiwi”)定义要添加的新元素。
//splice() 方法返回一个包含已删除项的数组
用splice来删除元素
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.splice(0, 1); // 删除 fruits 中的第一个元素
-
concat(合并)
合并两个数组,并创建一个新的数组。
var arr1 = ["Cecilie", "Lone"];
var arr2 = ["Emil", "Tobias", "Linus"];
var arr3 = ["Robin", "Morgan"];
var myChildren = arr1.concat(arr2, arr3); // 将arr1、arr2 与 arr3 连接在一起
-
slice(切片)
将数组的某个片段切出新的数组。不会从源数组中删除任何元素。
var fruits = ["Banana", "Orange", "Lemon", "Apple", "Mango"];
var citrus = fruits.slice(3); //从3号开始后面所有元素
var fruits = ["Banana", "Orange", "Lemon", "Apple", "Mango"];
var citrus = fruits.slice(1, 3); //表示1-3,不包括3号元素
-
sort(正排序)
字符串是以字母顺序对数组进行排序
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.sort(); // 对 fruits 中的元素进行排序
数字的正排序
var points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return a - b});
查找最高或最低的数组值:
var points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return a - b});
// 现在 points[0] 包含最低值
// 而 points[points.length-1] 包含最高值
-
reverse(反排序)
字符串以降序对数组进行排序
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.sort(); // 对 fruits 中的元素进行排序
fruits.reverse(); // 反转元素顺序
数字的降序排序:
var points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return b - a});
使用Math.max.apply和Math.min.apply在查找数组中的最高和最低值。
function myArrayMax(arr) {
return Math.max.apply(null, arr);
}
//Math.max.apply([1, 2, 3]) 等于 Math.max(1, 2, 3)。
function myArrayMin(arr) {
return Math.min.apply(null, arr);
}
//Math.min.apply([1, 2, 3]) 等于 Math.min(1, 2, 3)。
数组迭代
- 即对每一个数组内的元素进行一次操作。
-
Array.forEach
为每个元素调用一次函数(回调函数)
var txt = "";
var numbers = [45, 4, 9, 16, 25];
numbers.forEach(myFunction);
function myFunction(value, index, array) { //三个值项目值,项目索引,数组本身
txt = txt + value + "<br>";
}
-
Array.map()
- 通过对每个数组元素执行函数来创建新的数组
- 不会对没有值的数组元素执行函数
- 不会更改原始数组
<body>
<h1>JavaScript Array.map()</h1>
<p>通过对每个数组元素执行函数来创建新数组。</p>
<p id="demo"></p>
<script>
var numbers1 = [45, 4, 9, 16, 25];
var numbers2 = numbers1.map(myFunction);
document.getElementById("demo").innerHTML = numbers2;
function myFunction(value, index, array) { //项目值 项目索引 数组本身,当回调函数只有value时,可以省略索引。
return value * 2;
}
</script>
</body>
-
Array.filter()
- 进行筛选,并创建新的数组。
- some,every性质一样。
var numbers = [45, 4, 9, 16, 25];
var over18 = numbers.filter(myFunction);
function myFunction(value, index, array) {
return value > 18;
}
-
Array.indexOf()
- 在数组中搜索元素值并返回其位置
- 从0位开始。如果未找到返回-1
- 如果项目出现多次,那么只返回第一次命中位置。
- Array.lastindexOf()是从后开始搜索。
var fruits = ["Apple", "Orange", "Apple", "Mango"];
var a = fruits.indexOf("Apple");
-
Array.find()
- 返回通过测试函数的第一个数组元素的值
- Array.findIndex()是返回第一个数组的索引
var numbers = [4, 9, 16, 25, 29];
var first = numbers.find(myFunction);
function myFunction(value, index, array) {
return value > 18;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)