网易前端微专业,JavaScript程序设计基础篇:数组
Posted llguanli
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网易前端微专业,JavaScript程序设计基础篇:数组相关的知识,希望对你有一定的参考价值。
不论什么一种语言数组都是比較重要的,其作为一种基础对象应用非常多,如Java你肯定少不了集合(List,Map)这些。因此本篇主要记录JS的数组使用和经常用法。要点例如以下:
1,数组创建
两种方式:
var stu = new Array();
var stu1 = [];这就和定义对象一样:
var cat = new Object(); var cat1 = {};推荐用后者,比較简洁。如:
var score = [1, 2, 3];数组里的东西能够是不同类型的,数组里面能够是基础类型也能够是对象或数组:
var array = [ 163, "netease", {color: "red"}, [], true ]; console.log(array[0]); console.log(array[2].color);再来个:
2,length()函数,得到数组的长度
var stu = [ {id:1, score : 80}, {id:2, score : 75}, {id:3, score : 90}, ]; console.log(stu.length); // 3 stu = []; console.log(stu.length); //0通过stu[i]訪问并改动第i个元素.
3,indexof()函数。假设能找到返回找到的索引,找不到返回-1。勇于推断一个元素在不在数组里
var tel = [101, 110, 139]; var index = tel.indexOf(101); console.log(index);
4,forEach()函数
forEach 须要接受一个回调函数
var stu = [ {id:1, score : 80}, {id:2, score : 75}, {id:3, score : 90}, ]; var add5 = function(item, number, array){ item.score += 5; }; stu.forEach(add5); console.log(stu[0].score);这个回调对输入參数有要求,各自是当前的item,item的索引和整个array.forEach就会自己主动遍历每一行,然后将每一行都送给callback函数进行处理。
5,reverse()函数,将数组倒序
var stu = [ {id:1, score : 80}, {id:2, score : 75}, {id:3, score : 90}, ]; stu.reverse(); console.log(stu[0].score);6,array.sort()函数。该函数传入一个callback,很相似java的排序
var stu = [ {id:1, score : 80}, {id:2, score : 75}, {id:3, score : 90}, ]; var bySocre = function(a, b){ return b.score - a.score; } stu.sort(bySocre); var print_callback = function(item, number, array){ console.log(item.score); } stu.forEach(print_callback);备注:a,假设callback里返回false。则a排在b的前面。
假设return的是b - a,则是从大到小排,反之是从小到大排。
b,sort直接改变了原数组。
c,假设callback不传,则依照unicode码自小到大排序:
var names = ["yanzi", "gg", "ww"]; names.sort(); var print_callback = function(item, number, array){ console.log(item); } names.forEach(print_callback);
7,array.push()在已有数组末尾后面加元素。能够加多个。8,array.unshift()在数组的開始位置加入元素。演示样例代码:var stu = [ {id:1, score : 80}, {id:2, score : 75}, {id:3, score : 90}, ]; stu.push({id:4, score:100}); stu.unshift({id:5, score:99}); var print_callback = function(item, number, array){ console.log(item.id); } stu.forEach(print_callback);9,array.shift() 返回第一个元素,同一时候在原数组里删除第一个元素。10,array.pop() 返回最后一个元素。同一时候在原数组里删除最后一个元素。11,array.splice(a, b, C)须要传入三个參数,各自是从位置a開始,删除b个元素,然后插入元素C。C能够是多个演示样例代码:var stu = [ {id:1, score : 80}, {id:2, score : 75}, {id:3, score : 90}, ]; stu.splice(1,1,{id : 5, score:100}); var print_callback = function(item, number, array){ console.log(item.id); } stu.forEach(print_callback);备注:假设splice第三个參数不传入,则仅仅删除。假设第二个參数传0。则仅仅插入,不删除。
总结:reverse,sort, push, unshift, shift, pop, splice都有一个共同特点,都改变了原来的数组。
12,array.slice(start, end)从索引start到end-1拷贝出来一份返回。假设end參数不传。则截取到最后一个位置。
13,array.concat(a, b):将数组a和数组b连接到一起。14,array.join(a)对array每一个元素用a拼接起来。假设什么都不传。默认用。号进行切割。
15。array.map()需传入一个回调,回调须要return,默认将return的东西push到一个新的array.
var scores = [80, 75, 90]; var addScore = function(item, index, array){ return item + 5; } var scoresNew = scores.map(addScore); var print_callback = function(item, number, array){ console.log(item); } scoresNew.forEach(print_callback);16,array.reduce()
须要一个callback作为參数,callback(preResult, item, index, array),看一个求和的样例.
var scores = [80, 75, 90]; var sum = function(preresult, item, number, array){ return preresult + item; } var sum2 = scores.reduce(sum, 0); console.log(sum2);
总结:slice, concat, join, map, reduce不会改动原数组。
以上是关于网易前端微专业,JavaScript程序设计基础篇:数组的主要内容,如果未能解决你的问题,请参考以下文章