JavaScript权威指南读书笔记——第七章 数组
来源:互联网 发布:linux内核编译详解 编辑:程序博客网 时间:2024/06/05 09:14
创建数组
// 用数组直接量创建数组var arr1 = [1,2,3,4,5];// 创建长度为10的数组var arr2 = new Array(10);// 使用构造函数创建数组,并且初始化var arr3 = new Array(1,2,3,4,5);
数组元素的读和写
使用索引访问数组元素
通过索引访问数组,索引的范围是0-2的32次方-2。
var a = ["hello"];var value = a[0];a[1] = 1;
数组长度
每个数组都有一个length属性。
var arr = [0,1,2,3,4,5,6,7,8,9];varlength = arr.length; //数组的长度为10
length属性不仅可读还可写,将数组长度重新复制为小于当前length的时候,会将数组内索引大于等于新length值得元素从数组中删除。
arr.length = 5; // [0,1,2,3,4]
数组元素的添加和删除
出了直接使用索引来将数据添加到数组外还可以使用数组的push()方法,push()方法将数据添加到数组末尾。
var arr = [];arr.push("zero"); // ["zero"]arr.push("one", "two"); // ["zero","one"."two"]
pop()方法,在将数组末尾的元素从数组移除并返回。
var arr = ["a","b","c"];var value = arr.pop(); // value为"c",数组内容["a","b"]value = arr.pop(); // value为"b",数组内容["a"]
数组遍历
普通for循环遍历
var arr = [0,1,2,3,4];for (var i = 0, length = arr.length; i < length; i++){ var value = arr[i];}
for/in循环遍历
var arr = [0,1,2,3,4];for (var index in arr){ var value = arr[i];}
数组方法
join()
将数组中所有元素根据分隔符连接起来,返回字符串形式
var a = [0,1,2];a.join(); // "0,1,2"a.join(" "); // "0 1 2"
reverse()
将数组元素反转
var a = [0,1,2];a.reverse().join(); // "2,1,0"
sort()
将数组元素排序,默认根据字母顺序表排序
var arr1 = ["hello", "apple", "banana"];arr.sort(); // ["apple","banana","hello"]var arr2 = [111,4,22,12345,222];arr2.sort(function(a,b){ return a - b;}); // [4,22,111,222,12345]
concat()
创建并返回一个新数组,它的元素包括原始数组的元素和concat()的每个参数
var arr = [1,2,3];arr.concat([4,5]); // [1,2,3,4,5]
slice()
将数组返回数组的一个子数组。
var arr = [0,1,2,3,4,5,6,7,8,9];arr.slice(2, 7); // [2,3,4,5,6]arr.slice(3.-1); // [3,4,5,6,7,8]
splice()
该方法是插入数组元素和删除数组元素的通用方法。
var arr = [0,1,2,3,4,5,6,7,8,9];arr.splice(4); // 返回[4,5,6,7,8,9],arr的元素[0,1,2,3]arr.splice(1,2); // 返回[1,2],arr的元素[0,3]arr.splice(1,1); // 返回[3],arr的元素[0]var arr2 = [0,1,2,3,4];arr2.splice(1,2,"a","b"); // 返回[1,2],arr的元素[0,"a","b",3,4]arr2.splice(3,0,"c"); // 返回[],arr的元素[0,"a","b","c",3,4]
push()和pop()
这两个方法开始说过了
unshift()和shift()
unshift()方法可以将元素插入到数组开头返回数组长度,shift()方法将数组元素从开始移返回,并将索引后面数据的索引往前移位。
var arr = [];arr.unshift(1,2); // 数组元素为[1,2]arr.unshift(3); // 数组元素为[3,1,2]arr.shift(); // 返回3,数组元素为[1.2]
toString()和toLocaleString()
ECMAScript 5中的数组方法
forEach()
forEach()方法从头到尾遍历数组,为每个元素调用指定的函数。
var arr = [1,2,3,4,5];var sum = 0;// 执行完后sum的结果为15arr.forEach(function(value){ sum += value;});
map()
将调用的数组的每个元素传递给指定的函数,并返回一个数组。
var arr = [1,2,3,4,5];arr.map(function(value){ return value * value;}); arr.join(); // "1,4,9,16,25"
filter()
返回的数组是调用数组的子集,只有调用的函数的返回值为true时才存入返回的数组
var arr = [1,2,3,4,5,6,7,8,9,10];// 返回数组中偶数子集arr.filter(funciton(value){ return arr % 2 == 0;});
every()和some()
这两个方法是数组的逻辑判断方法。every()方法,判断方法所有的返回值都为true时返回true。some()方法,判断方法任何一个返回值为true时返回true。
var arr = [0,1,2,3,4,5,6,7,8,9];arr.every(function(value){ return value < 10;}); //truearr.every(function(value){ return value % 2 == 0;}); //falsearr.some(function(value){ return value > 10;}); //falsearr.some(function(value){ return value % 2 == 0;}); //true
注:every()方法只要有一个判断方法返回值为false,就会结束遍历返回false。some()方法只要有一个判断方法返回值为true,就会结束遍历返回true
reduce()和reduceRight()
使用指定的函数将数组元素合并。
var arr = [1,2,3,4,5];// 0是初始值,然后 (((((0+1)+2)+3)+4)+5)arr.reduce(function(a,b){ return a + b;},0);var arr2 = [2,3,4];// pow(2,pow(3,4))arr2.reduceRight(function(a,b){ return Math.pow(a,b);});
indexOf()和lastIndexOf()
搜索数组中具有给定值的元素
var arr = [0,1,2,1,0];arr.indexOf(1); // 返回值为1,arr[1]是1arr.lastIndexOf(1); // 返回值为3,arr[3]是1arr.indexOf(1,2); // 返回值为3,arr[3]是1
数组类型
Array.isArray()函数可以用来判断参数是否是数组
Array.isArray([]); // trueArray.isArray({}); // false
- JavaScript权威指南读书笔记——第七章 数组
- JavaScript权威指南:数组(第七章)
- JavaScript权威指南__第七章:数组
- 读书笔记 —《JavaScript权威指南》
- javascript权威指南--第七章
- JavaScript权威指南读书笔记—— 模块
- 《javascript权威指南》读书笔记(3)—语句
- JavaScript权威指南读书笔记——第六章 对象
- JavaScript权威指南读书笔记——第八章 函数
- JavaScript权威指南读书笔记——第十章 正则表达式
- JavaScript权威指南读书笔记——第十四章 Window对象
- JavaScript权威指南读书笔记——第十七章 事件处理
- JavaScript权威指南读书笔记——第十九章 jQuery类库
- JavaScript权威指南读书笔记——第二十章客户端存储
- 《JavaScript权威指南》读书笔记
- javascript权威指南读书笔记
- 《JavaScript权威指南》 -- 读书笔记
- javascript权威指南--读书笔记
- 51nod 1267 4个数和为0(二分)
- linux下如何安装jdk
- DeepLearning&Keras学习笔记3__mnist数据集CNN
- 一款有趣的游戏
- 53. Maximum Subarray
- JavaScript权威指南读书笔记——第七章 数组
- Use VS2017 C# 7.0 to accelerate async code
- 关于HTML form accept-charset 属性的若干尝试
- 处理阶乘及阶乘逆元的小技巧
- ImageLoader 图片加载框架
- 递归与动态规划---汉诺塔问题
- centos7安装ansible遇到的问题
- 金蝶K3 SQL报表系列-库存账龄分析
- 1003. 我要通过!(20)