Array
2015-11-19 10:01
302 查看
创建数组
数组的长度
数组的检测
数组的转换方法
栈方法
队列方法
数组排序
操作方法
查询元素位置
数组迭代方法
缩小方法(在我看来依旧是迭代方法~)
// 创建一个空数组 var arr1 = new Array(); var arr2 = Array(); var arr3 = []; // 创建一个长度为5的数组,它包含5个undefined var arr1 = new Array(5); var arr2 = Array(5); // 创建一个长度为3的数组,它的包含“red”,“blue”和“green”. var arr1 = new Array('red', 'blue', 'green'); var arr2 = Array('red', 'blue', 'green'); var arr3 = ['red', 'blue', 'green'];
数组的长度
var arr = [1, 2, 3]; arr.length = 2; arr // [1, 2] arr.length = 5; arr // [1, 2, undefined, undefined, undefined]
数组的检测
var arr = [1, 2, 3]; // 方法1 arr instanceof Array // true // 方法2 ECMAScript5 推荐 Array.isArray(arr) // true
数组的转换方法
// 数组转换时,undefined为"" var person1 = { toLocaleString : function () { return "toLocaleString1"; }, toString : function() { return "toString1"; } }; var person2 = { toLocaleString : function () { return "toLocaleString2"; }, toString : function() { return "toString2"; } }; var people = [person1, person2]; people // toString1,toString2 people.valueOf() // toString1,toString2 people.toString() // toString1,toString2 people.toLocaleString() // toLocaleString1,toLocaleString2 people.join() // toString1,toString2 people.join('||') // toString1||toString2
栈方法
var arr = [0]; var n = arr.push(1, 2, 3); arr // [0, 1, 2, 3] n // 4 n = arr.push(4); arr // [0, 1, 2, 3, 4] n // 5 var i = arr.pop(); arr // [0, 1, 2, 3] i // 4
队列方法
var arr = [0, 1, 2, 3]; var i = arr.shift(); arr // [1, 2, 3] i // 0 var n = arr.unshift(4, 5); arr // [4, 5, 1, 2, 3] n // 5
数组排序
var arr = [0, 1, 3, 2, 10]; // 反转原数组顺序 var re = arr.reverse(); arr // [10, 2, 3, 1, 0] re // [10, 2, 3, 1, 0] // 按toString()排序 var so = arr.sort(); arr // [0, 1, 10, 2, 3] so // [0, 1, 10, 2, 3] // 自定义排序方法 数值由小到大排序 arr.sort(function(a, b) { return a<b ? -1 : 1; }); arr // [0, 1, 2, 3, 10] // 对于数值类型,数值由小到大排序 推荐方法 arr.sort(function(a, b) { return a-b; }); arr // [0, 1, 2, 3, 10
操作方法
// 数组合并 var arr1 = [0, 1, 2]; var arr2 = arr1.concat(3, [4, 5], [6, 7]); arr1 // [0, 1, 2] arr2 // [0, 1, 2, 3, 4, 5, 6, 7] // 数组截取 var arr1 = [0, 1, 2, 3, 4, 5]; var arr2 = arr1.slice(1); var arr3 = arr1.slice(1, 4); var arr4 = arr1.slice(-4, -2); arr1 // [0, 1, 2, 3, 4, 5] arr2 // [1, 2, 3, 4, 5] arr3 // [1, 2, 3] arr4 // [2, 3] // 万能大法 splice() var arr1 = [0, 1, 2, 3, 4, 5]; var arr2 = arr1.splice(0, 2); // 删除 arr1 // [2, 3, 4, 5] arr2 // [0, 1] arr1 = [0, 1, 2, 3, 4, 5]; arr2 = arr1.splice(2, 0, 7, 8, 9); // 插入 arr1 // [0, 1, 7, 8, 9, 2, 3, 4, 5] arr2 // [] arr1 = [0, 1, 2, 3, 4, 5]; arr2 = arr1.splice(2, 2, 7, 8, 9); // 删除并插入 arr1 // [0, 1, 7, 8, 9, 4, 5] arr2 // [2, 3] arr1 = [0, 1, 2, 3, 4, 5]; arr2 = arr1.splice(-2, 2, 7, 8, 9); // 删除并插入2 arr1 // [0, 1, 2, 3, 7, 8, 9] arr2 // [4, 5]
查询元素位置
var arr = ['a', 'b', 'c', 'd', 'c', 'b', 'a']; arr.indexOf('c') // 2 arr.lastIndexOf('c') // 4 arr.indexOf('c', 3) // 4 arr.lastIndexOf('c', 3) // 2 arr.lastIndexOf('c', -5) // 2 // 查询用的是===比较 var person = { name: "Nicholas" }; var people = [{ name: "Nicholas" }]; var morePeople = [person]; people.indexOf(person) // -1 morePeople.indexOf(person) // 0
数组迭代方法
/* * 以下每个方法都接收两个参数: * 1. 要在每一项上运行的函数 * 参数包括:当前元素,当前下标,原数组 * 2. (可选的)运行该函数的作用域对象——影响this的值 */ var arr = [0, 1, 2, 3, 4, 5]; // 数组中任何元素都满足函数中的条件,返回true,否则返回false var ev = arr.every(fun1); ev // false // 数组中有元素满足函数中的条件,返回true,都不满足返回false var so = arr.some(fun1); so // true // 返回数组中满足函数条件的元素数组 var fi = arr.filter(fun1); fi // [4, 5] // 返回数组所有元素运行函数后的结果 var ma = arr.map(fun2); ma // [0, 2, 4, 6, 8, 10] // 相当于for循环,没有返回值 var fo = arr.forEach(fun2); fo // undefined // 判断元素是否大于3 function fun1(item, index, array) { return item>3; } // 元素值 * 2 function fun2(item, index, array) { return item*2; }
缩小方法(在我看来依旧是迭代方法~)
var arr = [0, 1, 2, 3, 4, 5]; // 从前向后迭代,返回最终结果 var re = arr.reduce(fun1); console.log(re); // prev=0 cur=1 index=1 arr=0,1,2,3,4,5 // prev=1 cur=2 index=2 arr=0,1,2,3,4,5 // prev=3 cur=3 index=3 arr=0,1,2,3,4,5 // prev=6 cur=4 index=4 arr=0,1,2,3,4,5 // prev=10 cur=5 index=5 arr=0,1,2,3,4,5 // 15 // 从后向前迭代,返回最终结果 var rr = arr.reduceRight(fun1); console.log(rr); // prev=5 cur=4 index=4 arr=0,1,2,3,4,5 // prev=9 cur=3 index=3 arr=0,1,2,3,4,5 // prev=12 cur=2 index=2 arr=0,1,2,3,4,5 // prev=14 cur=1 index=1 arr=0,1,2,3,4,5 // prev=15 cur=0 index=0 arr=0,1,2,3,4,5 // 15 // 参数(前一个值,当前值,下标,原数组) function fun1(prev, cur, index, array) { console.log('prev=' + prev + ' cur=' + cur + ' index=' + index + ' arr=' + array); return prev+cur; }
相关文章推荐
- 解析从源码分析常见的基于Array的数据结构动态扩容机制的详解
- javascript数组操作总结和属性、方法介绍
- mysql_fetch_assoc和mysql_fetch_row的功能加起来就是mysql_fetch_array
- JavaScript Array扩展实现代码
- JavaScript之数组(Array)详解
- C#中Array与ArrayList用法及转换的方法
- Array栈方法和队列方法的特点说明
- Array.prototype.slice 使用扩展
- Array, Array Constructor, for in loop, typeof, instanceOf
- 实例详解ECMAScript5中新增的Array方法
- js Array的用法总结
- JavaScript 判断判断某个对象是Object还是一个Array
- Javascript中的Array数组对象详谈
- js模拟实现Array的sort方法
- 在javascript将NodeList作为Array数组处理的方法
- PHP array_multisort()函数的使用札记
- PHP中array_merge和array相加的区别分析
- Sorting Array Values in PHP(数组排序)
- 深入array multisort排序原理的详解
- Array 重排序方法和操作方法的简单实例