一、概述
JavaScript的 Array
对象是用于构造数组的全局对象,数组是类似于列表的高阶对象。
二、创建数组四种方式
2.1、字面-隐式创建数组
var movieList = ["大圣归来","哪吒之魔童降世","八佰"];console.log(movieList.length); // 3// 数组直接量还可以包含对象直接量和其他数组直接量var complexArr =[1, ["foo", {x:1,y:2}, "哪吒之魔童降世"], [3, {a:3,b:4}]];console.log(complexArr);
2.2、单纯创建JavaScript数组并给数组元素赋值
var myArr = new Array();myArr[0] = "斗罗大陆";myArr[1] = "Foo";myArr[2] = "大圣归来";console.log(myArr); // ["斗罗大陆", "Foo", "大圣归来"]注:用new关键字创建数组对象Array(),Array()对象是一个本地类,可以用new创建一个对象后使用。
2.3、简洁方式-直接实例化
var directArr = new Array("HQA","武动乾坤","大米");console.log(directArr); // ["HQA", "武动乾坤", "大米"]注:括号也可以声明一个数组对象,当然类似C语言,也可以定义2维3维和多维的数组。
2.4、创建JavaScript数组的同时规定数组大小
var provideArr = new Array(8); // 这里就创建了一个初始化大小为8的数组console.log(provideArr); // [empty × 8]注意:当使用数组大小超过初始化大小时,数组会自动被撑大,不会像C语言那样发生错误。动态增长是js数组的一个性质。其中,在js中支持最大数组长度为4294967295。
三、访问数组元素
3.1、取值
var first = movieList[0];console.log(first); // 大圣归来var last = movieList[movieList.length - 1];console.log(last); // 八佰
3.2、赋值
movieList[3] = "斗罗大陆";console.log(movieList); // ["大圣归来", "哪吒之魔童降世", "八佰", "斗罗大陆"]
3.3、修改
movieList[2] = "Holle World";console.log(movieList); // ["大圣归来", "哪吒之魔童降世", "Holle World", "斗罗大陆"]
四、创建一个空数组
4.1、方式一:
let emptyArr = [];
4.2、方式二:
let emptyArr = new Array();
注:空数组的toString()值为空字符串""。
五、js数组求和的方法
let arr = [11, 12, 13, 14, 15];let sum = 0;
5.1、常规遍历方式
5.1.1、for 遍历方式
for (let i = 0, len = arr.length; i sum += arr[i];}
5.1.2、for in 遍历方式
for (let i in arr) { sum += arr[i];}
5.1.3、for of 遍历方式
for (let i of arr) { sum += i;}
5.1.4、forEach 遍历方式
arr.forEach((val, index, arr) => { sum += val;});
5.1.5、map 遍历方式
arr.map((val, index, arr) => { sum += val;});
5.2、归并方式reduce()
sum = arr.reduce((prev, next, index, array) => prev + next);
5.3、归并方式 reduceRight()
sum = arr.reduceRight((last, before, index, array) => last + before);
5.4、递归方式
sum = () => { let len = arr.length; if (len == 0) { return 0; } else if (len == 1) { return arr[0]; } else { return arr[0] + sum(arr.slice(1)); }}
5.5、eval方式(不推荐,耗性能最慢)
sum = eval(arr.join("+"));
注:for循环最快,注意要把len先存储下来,归并最便捷,eval最简洁但是耗性能且慢。
六、js数组去重方法
6.1、将两个数组拼接为一个数组,然后使用 ES6 中的 Array.filter() 遍历数组,并结合 indexOf 来排除重复项(此方法去重性能不是一般的差,不推荐)。
function duplicateFilterArr(arrA, arrB) { let todoArr = arrA.concat(arrB); return todoArr.filter((item, index)=> { return todoArr.indexOf(item) === index; });}
欢迎关注微信公众号