数组
-
数组是一种特殊的对象,再javaScript中对数组使用typeof运算符返回"object",所有 JavaScript 对象都拥有 toString() 方法。
-
数组的length 属性(既然有属性,也可以从另一方面验证数组是对象)
arr = [1,2,3,4] console.log(arr.length); //4 arr[8] = 9 console.log(arr.length); d//9
数组的定义
-
定义数组的两种方法
let arr = [4,8]; let arr1 = new Array(4,8);
判断数组
-
判断空数组,如果数组的长度为0 ,怎证明数组是空的
let arr = [] if(arr.length == 0){ console.log("arr 是空数组") }
-
判断是否是数组
let arr = [4, 8]; // istanceof 方法 console.log(typeof arr); //object typeof只能判断数组是对象,所一不可以用typeof 判断是不是数组 console.log(arr instanceof Array); //true //使用 es6 的isArray 方法 console.log(Array.isArray([])); //true console.log(Array.isArray(arr)); //true // 自定义判断数组的方法 function isArray(array) { //假如对象原型包含单词 "Array" 则返回 true return array.constructor.toString().indexOf("Array") > -1; } console.log(isArray([])); //true console.log(isArray(arr)); //true
数组的方法
-
toString 所有 JavaScript 对象都拥有 toString() 方法。toString() 把数组转换为数组值(逗号分隔)的字符串
arr = ["你好", "小毅", "牛年大吉"]; console.log(arr.toString()); //你好,小毅,牛年大吉 console.log(arr);//["你好", "小毅", "牛年大吉"]
-
join ,它的行为类似 toString(),但是您还可以规定分隔符:
arr = ["你好", "小毅", "牛年大吉"]; console.log(arr.join("x")) // 你好x小毅x牛年大吉
-
pop 删除最后一个元素 返回被删除的值
-
shift 删除首个元素,返回被删除的元素
-
push 在数组尾部添加一个新的元素 ,返回新数组的长度
-
unshift 在数组首部添加一个元素,返回新数组的长度
-
delete arr[0],删除第一个元素,不会改变其他元素的索引,第一元素变为undefined
-
splice 拼接数组 返回一个包含已删除项的数组:
第一个参数(2)定义了应添加新元素的位置(拼接)。 第二个参数(0)定义应删除多少元素。 其余参数(“Lemon”,“Kiwi”)定义要添加的新元素。
-
concat 连接多个数组,返回连接后的新数组
var arr1 = ["Cecilie", "Lone"]; var arr2 = ["Emil", "Tobias", "Linus"]; var arr3 = ["Robin", "Morgan"]; var myChildren = arr1.concat(arr2, arr3); // 将arr1、arr2 与 arr3 连接在一起 var arr1 = ["Cecilie", "Lone"]; var myChildren = arr1.concat(["Emil", "Tobias", "Linus"]);
-
slice 切出数组,arr.slice(start,end) 第二个参数空则默认到最后一个元素,创建一个新的数组,不会从源数组中删除任何元素
数组的排序
-
sort 方法对数组排序
数组升序排序
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 b - a});
-
reverse 反转数组
fruits.reverse();
数组迭代
-
forEach() 方法
arr = [1,2,3,4,5,6,7] /** * 该函数接受 3 个参数: * 项目值 * 项目索引 * 数组本身 * / arr.forEach((value,index,arr1)=>{ console.log(value,index,arr1); })
-
Array.map()
map() 方法通过对每个数组元素执行函数来创建新数组。
map() 方法不会对没有值的数组元素执行函数。
map() 方法不会更改原始数组。
arr.map((value,index,arr1)=>{ console.log(value,index,arr1); })
-
filter() 方法创建一个包含通过测试的数组元素的新数组。
返回一个元素都大与18 的新数组
arr.filter((value,index,arr)=>{ return value > 18 })
-
Array.every() 所有元素都通过测试,所有都通过返回true,否则为false
-
Array.some() 某些元素是否通过了测试,有至少一个则返回true,都不通过返回false
-
Array.indexOf(value) 返回数组中第一次出现 value 对应的位置(index+1)
-
Array.reduce()
var numbers1 = [45, 4, 9, 16, 25]; var sum = numbers1.reduce((total, value, index, array)=> { return total + value; });
-
Array.find() 返回通过测试的第一数组元素值
var goodAge = numbers1.find((value, index, array)=> { return value > 18; });
-
Array.findIndex() 测试函数的第一个数组元素的索引
var goodAgeIndex = numbers1.find((value, index, array)=> { return value > 18; });
apply call
-
apply 方法接受数组形式的参数。 Aarry 中没有Math 方法
let max1 = Math.max.apply(null,arr);
-
call 方法分别接受参数
let max = Math.max.call(arr,2,3,4,5,555,);