1.数组的定义
var arr = ["Bill","Gates",33];
arr[0] = Date.now();
console.log(arr[0]);//[Number] 1629874326613
console.log(arr.length); //数组长度 [Number] 3
arr.push('Mayun') //向数组中添加元素
arr.forEach(function(res){
console.log("结果:" + res); //遍历数组的结果:1629874326613 Gates 33 Mayun
})
console.log(arr instanceof Array); //[Boolean] true
console.log(typeof arr); //object
2. toString()
把数组转换为数组值(逗号分隔)的字符串。
var arr2 = ["Bill","Gates",33];
console.log(arr2.toString());//Bill,Gates,33
3.join()
join() 方法也可将所有数组元素结合为一个字符串。
console.log(arr2.join("-")); //Bill-Gates-33
join() 类似 toString(),但是您还可以规定分隔符:
4.pop()
从数组中删除最后一个值,方法返回 “被删除的这个值”
console.log(arr2.pop());//[Number] 33
console.log(arr2); // [Object] ["Bill","Gates"]
5.push()
(在数组结尾处)向数组添加一个新的元素,并返回数组的长度。
console.log(arr2.push("Mayun"));// [Number] 4
console.log(arr2); //[Object] ["Bill","Gates",33,"Mayun"]
6.shift()
删除首个数组元素,并把所有其他元素“位移”到更低的索引,返回被“位移出”的字符串。
console.log(arr2.shift()); //Bill
console.log(arr2); //[Object] ["Gates",33,"Mayun"]
7. unshift()
在开头)向数组添加新元素,并“向后位移”旧元素:
console.log(arr2.unshift("LiNing")); //[Number] 4
console.log(arr2); // [Object] ["LiNing","Gates",33,"Mayun"]
8.splice()
可用于向数组添加新项:splice() 方法返回一个包含已被删除项的数组:
- 第一个参数(2)定义了应添加新元素的位置(拼接)。
- 第二个参数(0)定义应删除多少元素。
- 其余参数(“Lemon”,“Kiwi”)定义要添加的新元素。
var arr3 = ["A","B","C","D"];
console.log(arr3.splice(1,2,"Aki","Kimi")); //'["B","C"] '
console.log(arr3);// '["A", "Aki", "Kimi", "D"]'
您能够使用 splice() 在数组中不留“空洞(null,nudefind)”的情况下移除元素:
onsole.log(arr3.splice(0,1));// 被删除的元素数组 ["A"]
console.log(arr3); //删除后的数组 '["B","C","D"] '
9.concat()
合并(连接)现有数组来创建一个新数组:
var arr3 = ["A","B","C","D"];
var arr4 = ["1","2","3"];
var arr5 = ["mike","kity"];
var arr6 = ["Java","iOS"];
//此方法可以拼接 1到无数多个数组
var result = arr3.concat(arr4,arr5,arr6);
console.log(result); // '["A","B","C","D","1","2","3","mike","kity","Java","iOS"] '
10.slice()
从某个数组中切出新数组。
var fruits = ["Banana", "Orange", "Lemon", "Apple", "Mango"];
//从数组元素 1 ("Orange")开始切出一段数组:
var citrus = fruits.slice(1); // ' ["Orange","Lemon","Apple","Mango"]'
slice() 方法创建新数组。它不会从源数组中删除任何元素。
var fruits = ["Banana", "Orange", "Lemon", "Apple", "Mango"];
//从数组元素 3 ("Apple")开始切出一段数组:
var citrus = fruits.slice(3); //'["Apple","Mango"]'
slice() 可接受两个参数,比如 (1, 3)。
当给 slice() 方法赋予两个参数时,它从 start 参数中选择数组元素,直到(但不包括)end 参数:
var fruits = ["Banana", "Orange", "Lemon", "Apple", "Mango"];
var citrus = fruits.slice(1, 3); //["Orange","Lemon"]
11.toString
把数组转换为字符串
var fruits = ["Banana", "Orange", "Lemon", "Apple", "Mango"];
console.log(fruits.toString()); //Banana,Orange,Lemon,Apple,Mango
12.sort()
sort() 方法以字母顺序对数组进行排序:
var fruits = ["Banana", "Orange", "Lemon", "Apple", "Mango"];
console.log(fruits.sort()); // '["Apple","Banana","Lemon","Mango","Orange"] '
13.reverse()
reverse() 方法反转数组中的元素。(可以使用它以降序对数组进行排序:)
var fruits = ["Banana", "Orange", "Lemon", "Apple", "Mango"];
//对数组进行排序
console.log(fruits.sort()); // '["Apple","Banana","Lemon","Mango","Orange"] '
//将排序后的数组进行翻转
console.log(fruits.reverse());// '["Orange","Mango","Lemon","Banana","Apple"]'
14.数值排序 sort()
如果数字按照字符串来排序,则 "25" 大于 "100",因为 "2" 大于 "1"。
正因如此,sort()
方法在对数值排序时会产生不正确的结果。
- 可以通过一个比值函数来修正此问题:
var points = [40, 100, 1, 5, 25, 10];
console.log("数值排序" + points.sort()); // 错误 : 数值排序1,10,100,25,40,5
//用比值函数做处理
var newArr = points.sort(function(a, b) {
return a - b;
});
console.log(newArr); //正确 [1,5,10,25,40,100]
- 使用相同的技巧进行 降序 排序
var points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return b - a}); //100,40,25,10,5,1
15.获取数组最大值和最小值
var points2 = [40, 100, 1, 5, 25, 10];
// 获取数组的最大值和最小值
console.log(Math.max.apply(null,points2)); //100
console.log(Math.min.apply(null,points2)); //1
16.Array.forEach() 数组迭代
forEach() 方法为每个数组元素调用一次函数(回调函数)。
var points3 = [40, 100, 1, 5, 25, 10];
points3.forEach(function(value,index){
console.log("遍历的值:" + value);
})
17.Array.map()
map() 方法通过对每个数组元素执行函数来创建新数组。
map() 方法不会对没有值的数组元素执行函数。
map() 方法不会更改原始数组
var points3 = [40, 100, 1, 5, 25, 10];
var points33 = points3.map(function(value,index,arr){
return value * 2;
})
console.log("得到的新数组:" + JSON.stringify(points33)); //得到的新数组:[80,200,2,10,50,20]
18.Array.filter()
filter() 方法创建一个包含通过测试的数组元素的新数组
var points3 = [40, 100, 1, 5, 25, 10];
//这个例子用值大于 18 的元素创建一个新数组:
var points33 = points3.filter(function(value,index,arr){
return value > 18
})
console.log("过滤后的数组:" + JSON.stringify(points33));//得到的新数组:[40,100,25]
19.Array.reduce()
reduce() 方法在每个数组元素上运行函数,以生成(减少它)单个值。
reduce() 方法在数组中从左到右工作。
reduce() 方法不会减少原始数组。
var points3 = [40, 100, 1, 5, 25, 10];
var sum = points3.reduce(function(total,value,index,arr){
return total + value
})
console.log("求和后的值:" + sum); //求和后的值:181
请注意此函数接受 4 个参数:(未用到的参数可以省略写)
- 总数(初始值/先前返回的值)
- 项目值
- 项目索引
- 数组本身
reduce() 方法能够接受一个初始值:
var points3 = [1,1,1,1,1];
var sum = points3.reduce(function(total,value,index,arr){
return total + value
},5)
console.log("求和后的值:" + sum); //求和后的值:10
20.Array.reduceRight()
reduceRight() 方法在每个数组元素上运行函数,以生成(减少它)单个值。
reduceRight() 方法在数组中从右到左工作。另请参阅 reduce()。
reduceRight() 方法不会减少原始数组
var numbers = [1,2,3,4,5];
var sunm1 = numbers.reduceRight(function(total,value,index,arr){
return total + value
})
console.log(sunm1); // 15
reduce()/reduceRight()
方法和 for/while
的不同: 前者性能比较好,耗时少,而for/while性能差耗时长
21.Array.every()
every() 方法检查数组所有的元素是否满足指定条件
- 如果数组中检测到有一个元素不满足,则整个表达式返回 false ,且剩余的元素不会再进行检测。
- 如果所有元素都满足条件,则返回 true。
var testArr = [45, 4, 9, 16, 25];
var allOver18 = testArr.every(function(value,index,arr){
return value > 18
})
console.log(allOver18); //false
every() 不会对空数组进行检测。不会改变原始数组。
22.Array.some()
检测数组中是否有元素大于 指定条件:
some() 方法会依次执行数组的每个元素:
- 如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测。
- 如果没有满足条件的元素,则返回false。
var testArr = [45, 4, 9, 16, 25];
var allOver18 = testArr.some(function(value,index,arr){
return value > 18
})
console.log(allOver18); //true
some() 不会对空数组进行检测。不会改变原始数组。
23.Array.indexOf()
在数组中搜索元素值并返回其位置
- 如果未找到项目,Array.indexOf() 返回 -1。
- 如果项目多次出现,则返回第一次出现的位置。
array.indexOf(item, start)
item
必需。要检索的项目。start
可选。从哪里开始搜索。负值将从结尾开始的给定位置开始,并搜索到结尾。
var fruitss = ["Apple", "Orange", "Apple", "Mango"];
var a = fruitss.indexOf("Apple");
console.log("item位置是:" + a); //item位置是:0
24.Array.lastIndexOf()
从数组结尾开始搜索
var fruitss = ["Apple", "Orange", "Apple", "Mango"];
var a = fruitss.lastIndexOf("Apple");
console.log("item位置是:" + a); //item位置是:2
25.Array.find()
find() 方法返回通过测试(函数内判断)的数组的第一个元素的值。
var testArr = [45, 4, 9, 16, 25];
var first = testArr.find(function(value,index,arr){
return value > 46
})
console.log(first); //undefined
- 当数组中的元素在测试条件时返回 true 时, find() 返回符合条件的元素,之后的值不会再调用执行函数。
- 如果没有符合条件的元素返回 undefined
26.Array.findIndex()
返回传入一个测试条件(函数)符合条件的数组第一个元素位置(索引、下标)。
var testArr = [4, 45, 9, 16, 25];
var first = testArr.findIndex(function(value,index,arr){
return value > 18
})
console.log(first); // 1
- 当数组中的元素在测试条件时返回 true 时, findIndex() 返回符合条件的元素的索引位置,之后的值不会再调用执行函数。
- 如果没有符合条件的元素返回 -1