如何定义数组?
var fruits = ["Banana", "Orange", "Apple", "Mango"];
遍历、访问数组
//for循环遍历数组
for (var i = 0; i < fruits.length; i++) {
var fruit = fruits[i];
console.log("fruit:" + fruit);
}
向数组添加元素
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits[fruits.length] = "Lemon";
将未定义的“孔”插入数组中
//定义数组
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits[6] = "Lemon";
//for循环遍历数组
for (var i = 0; i < fruits.length; i++) {
var ff = fruits[i];
console.log("ff:" + ff);
}
//Banana
//Orange
//Apple
//Mango
//undefined
//undefined
//Lemon
判断是否是数组
方式1:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
Array.isArray(fruits); // true
方式2:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits instanceof Array; // true
向数组追加元素
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.push("Kiwi"); //Banana,Orange,Apple,Mango,Kiwi
删除数组最后一个元素
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.pop(); // Banana,Orange,Apple
将数组中的元素连接成一个字符串
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.join(" * "); // Banana * Orange * Apple * Mango
合并数组
//合并两个数组
var myGirls = ["Emma", "Isabella"];
var myBoys = ["Jacob", "Michael", "Ethan"];
var myChildren = myGirls.concat(myBoys);
//合并多个数组
var arrs = arr1.concat(arr2,arr3,arrn,...);
在数组的指定位置删除、添加元素
语法
array.splice(index,howmany,item1,.....,itemX);
参数 Values
参数 | 描述 |
---|---|
index | 必需。规定从何处添加/删除元素。 该参数是开始插入和(或)删除的数组元素的下标,必须是数字。 |
howmany | 可选。规定应该删除多少元素。必须是数字,但可以是 "0"。 如果未规定此参数,则删除从 index 开始到原数组结尾的所有元素。 |
item1, ..., itemX | 可选。要添加到数组的新元素 |
指定位置添加新元素:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.splice(2,0,"Lemon","Kiwi"); // Banana,Orange,Lemon,Kiwi,Apple,Mango
从第三个位置开始删除数组后的两个元素:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.splice(2,2); // Banana,Orange
移除数组的第三个元素,并在数组第三个位置添加新元素
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.splice(2,1,"Lemon","Kiwi"); // Banana,Orange,Lemon,Kiwi,Mango
把数组转换为字符串
toString() 方法以逗号分隔的字符串返回数组:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.toString(); //Banana,Orange,Apple,Mango
将新元素添加到数组的开头
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.unshift("Lemon"); // Lemon,Banana,Orange,Apple,Mango
删除数组中的第一个元素
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.shift(); // Orange,Apple,Mango
按字母顺序对数组进行升序排序
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.sort(); // Apple,Banana,Mango,Orange
按字母顺序对数组进行降序排序
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.sort(); //先升序排列
fruits.reverse(); //再翻转数组中元素 Orange,Mango,Banana,Apple
传入比较函数对数值进行排序
(1)、什么是比较函数?
该函数应返回负值、零值或正值,具体取决于参数,例如: function(a, b){return a-b}。 sort() 方法比较两个值时,将值发送给比较函数,根据返回的(负、零、正)值对值进行排序,a,b是任意两个相邻的比较值,仅当比较函数返回正值时,交换两个比较值的顺序(排序原理)。
(2)、升序排列
var points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return a-b}); //[1,5,10,25,40,100]
(3)、降序排序
var points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return b-a}); //[100,40,25,10,5,1]
取数组中最大的数
var points = [40, 100, 1, 5, 25, 10];
var maxValue = myArrayMin(points); // 100
function myArrayMax(arr) {
return Math.max.apply(null, arr);
}
手写算法,取最大值:
function myArrayMax(arr) {
var len = arr.length;
var max = -Infinity;
while (len--) {
if (arr[len] > max) {
max = arr[len];
}
}
return max;
}
取数组中最小的数
var points = [40, 100, 1, 5, 25, 10];
var minValue = myArrayMin(points); // 1
function myArrayMin(arr) {
return Math.min.apply(null, arr);
}
手写算法,取最小值:
function myArrayMin(arr) {
var len = arr.length;
var min = Infinity;
while (len--) {
if (arr[len] < min) {
min = arr[len];
}
}
return min;
}
按数字属性给对象进行排序
//存放对象的数组
var cars = [
{type:"BMW", year:2017},
{type:"Audi", year:2019},
{type:"porsche", year:2018}
];
//排序
cars.sort(function(a, b){return a.year - b.year});
// 输出日志:
// BMW 2017
// porsche 2018
// Audi 2019
按字符串属性给对象进行排序
//存放对象的数组
var cars = [
{type:"BMW", year:2017},
{type:"Audi", year:2019},
{type:"porsche", year:2018}
];
//排序
cars.sort(function (a, b) {
var x = a.type.toLowerCase();
var y = b.type.toLowerCase();
if (x < y) { return -1; }
if (x > y) { return 1; }
return 0;
});
Array.forEach()
为每个元素调用一次函数。
var numbers = [45, 4, 9, 16, 25];
numbers.forEach(myFunction);
function myFunction(value, index, array) {
console.log("value:" + value + ", index:" + index);
}
//输出日志:
// value:45, index:0
// value:4, index:1
// value:9, index:2
// value:16, index:3
// value:25, index:4
Array.map()
通过对每个数组元素执行函数来创建新数组。
var numbers1 = [45, 4, 9, 16, 25];
var numbers2 = numbers1.map(myFunction); // 90,8,18,32,50
function myFunction(value, index, array) {
return value * 2;
}
Array.filter()
使用通过测试的所有数组元素创建一个新数组。
var numbers = [45, 4, 9, 16, 25];
var over18 = numbers.filter(myFunction); // 45,25
function myFunction(value, index, array) {
return value > 18;
}
Array.reduce()、Array.reduceRight()
此例确定数组中所有数字的总和:
var numbers = [45, 4, 9, 16, 25];
var sum = numbers.reduce(myFunction); // 99
//var sum = numbers.reduceRight(myFunction); // 99
function myFunction(total, value, index, array) {
return total + value;
}
Array.every()
检查所有数组值是否通过测试。
var numbers = [45, 4, 9, 16, 25];
var allOver18 = numbers.every(myFunction);
console.log("所有大于 18 的是:" + allOver18); // 所有大于 18 的是:false
function myFunction(value, index, array) {
return value > 18;
}
Array.some()
检查某些数组值是否通过了测试。
var numbers = [45, 4, 9, 16, 25];
var someOver18 = numbers.some(myFunction);
console.log("某些值大于 18 是:" + someOver18); // 某些值大于 18 是:true
function myFunction(value, index, array) {
return value > 18;
}
Array.indexOf()
查找数组元素 "Apple"出现的位置:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
var a = fruits.lastIndexOf("Apple"); //a 输出结果:2
查找数组元素 "Apple"出现的位置,出现多次时,获取到的是最后一个"Apple"的位置:
var fruits=["Banana","Orange","Apple","Mango","Banana","Orange","Apple"];
var a = fruits.lastIndexOf("Apple"); //a 输出结果:6
从数组中的第四个位置查找字符串 "Apple"出现的位置:
var fruits=["Banana","Orange","Apple","Mango","Banana","Orange","Apple"];
var a = fruits.lastIndexOf("Apple",4); //a 结果输出:2
Internet Explorer 8 或更早的版本不支持 indexOf()。
Array.find()
获取数组中大于 18 的第一个值。
var numbers = [4, 9, 16, 25, 29];
var first = numbers.find(myFunction); // 大于 18 的第一个值是:25
function myFunction(value, index, array) {
return value > 18;
}
Array.findIndex()
获取数组中大于 18 的第一个值的索引。
var numbers = [4, 9, 16, 25, 29];
var first = numbers.findIndex(myFunction); // 大于 18 的第一个值的索引是:3
function myFunction(value, index, array) {
return value > 18;
}