类数组
<script type="text/javascript"> var obj={ "0":'a', '1':'b', 'length':2, 'splice':Array.prototype.splice, 'push':Array.prototype.push } Array.prototype.push=function (target){ obj[obj.length]=target; obj.length++; } </script>
数组
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> </head> <body> <script type="text/javascript"> //1.push最后一位增加一个数 //2.pop去掉数组最后的一位 //3.unshif再第一位增加一个数 shift去掉数组的第一位 //4.reverse颠倒数组 //5.sort排序(升序) //6.splice(从第几位开始截取多少长度,从切口处添加新的数据) //7.retBytes(数组) //8.concat //9.join arr.join('!')按照传的参数连接 //10.split //11.toString把数组弄成字符串 //12.slice 从该为位取到那位(1,3)或者(1) // var arr=[]; // arr=new Array(1,2,3); // Array.prototype.push=function (){ // for(var i=0;i<arguments.length;i++){ // this[this.length]=arguments[i]; // } // } var arr=[1,5,7,89,2]; arr.sort(function (){ Math.random(); }); arr.sort(function (a,b){ return a-b;//升序 return b-a;//降序 //if(a>b){return 1} else{return -1} }); </script> </body> </html> <!-- 1.concat() 连接两个数组并返回一个新的数组** **。 var myArray = new Array(“1”, “2”, “3”); myArray = myArray.concat(“a”, “b”, “c”); // myArray is now [“1”, “2”, “3”, “a”, “b”, “c”] 2. join(deliminator = ‘,’) 将数组的所有元素连接成一个字符串。 var myArray = new Array(“Wind”, “Rain”, “Fire”); var list = myArray.join(” - “); // list is “Wind - Rain - Fire” 3.push() 在数组末尾添加一个或多个元素,并返回数组操作后的长度。 var myArray = new Array(“1”, “2”); myArray.push(“3”); // myArray is now [“1”, “2”, “3”] 4.pop() 从数组移出最后一个元素,并返回该元素。 var myArray = new Array(“1”, “2”, “3”); var last = myArray.pop(); // myArray is now [“1”, “2”], last = “3” 5.shift() 从数组移出第一个元素,并返回该元素。 var myArray = new Array (“1”, “2”, “3”); var first = myArray.shift(); // myArray is now [“2”, “3”], first is “1” 6.unshift() 在数组开头添加一个或多个元素,并返回数组的新长度。 var myArray = new Array (“1”, “2”, “3”); myArray.unshift(“4”, “5”); // myArray becomes [“4”, “5”, “1”, “2”, “3”] 7.slice(start_index, upto_index) 从数组提取一个片段,并作为一个新数组返回。 var myArray = new Array (“a”, “b”, “c”, “d”, “e”); myArray = myArray.slice(1, 4); // starts at index 1 and extracts all elements // until index 3, returning [ “b”, “c”, “d”] 8.splice(index, count_to_remove, addElement1, addElement2, …)从数组移出一些元素,(可选)并替换它们。 var myArray = new Array (“1”, “2”, “3”, “4”, “5”); myArray.splice(1, 3, “a”, “b”, “c”, “d”); // myArray is now [“1”, “a”, “b”, “c”, “d”, “5”] // This code started at index one (or where the “2” was), // removed 3 elements there, and then inserted all consecutive // elements in its place. 9.reverse() 颠倒数组元素的顺序:第一个变成最后一个,最后一个变成第一个。 var myArray = new Array (“1”, “2”, “3”); myArray.reverse(); // transposes the array so that myArray = [ “3”, “2”, “1” ] 10.sort() 给数组元素排序。 var myArray = new Array(“Wind”, “Rain”, “Fire”); myArray.sort(); // sorts the array so that myArray = [ “Fire”, “Rain”, “Wind” ] sort() 也可以带一个回调函数来决定怎么比较数组元素。这个回调函数比较两个值,并返回3个值中的一个: 例如,下面的代码通过字符串的最后一个字母进行排序: var sortFn = function(a, b){ if (a[a.length - 1] < b[b.length - 1]) return -1; if (a[a.length - 1] > b[b.length - 1]) return 1; if (a[a.length - 1] == b[b.length - 1]) return 0; } myArray.sort(sortFn); // sorts the array so that myArray = [“Wind”,”Fire”,”Rain”] 如果 a 小于 b ,返回 -1(或任何负数) 如果 a 大于 b ,返回 1 (或任何正数) 如果 a 和 b 相等,返回 0。 11.indexOf(searchElement[, fromIndex]) 在数组中搜索searchElement 并返回第一个匹配的索引。 var a = [‘a’, ‘b’, ‘a’, ‘b’, ‘a’]; console.log(a.indexOf(‘b’)); // logs 1 // Now try again, starting from after the last match console.log(a.indexOf(‘b’, 2)); // logs 3 console.log(a.indexOf(‘z’)); // logs -1, because ‘z’ was not found 12.lastIndexOf(searchElement[, fromIndex]) 和 indexOf 差不多,但这是从结尾开始,并且是反向搜索。 var a = [‘a’, ‘b’, ‘c’, ‘d’, ‘a’, ‘b’]; console.log(a.lastIndexOf(‘b’)); // logs 5 // Now try again, starting from before the last match console.log(a.lastIndexOf(‘b’, 4)); // logs 1 console.log(a.lastIndexOf(‘z’)); // logs -1 13.forEach(callback[, thisObject]) 在数组每个元素项上执行callback。 var a = [‘a’, ‘b’, ‘c’]; a.forEach(function(element) { console.log(element);} ); // logs each item in turn 14.map(callback[, thisObject]) 在数组的每个单元项上执行callback函数,并把返回包含回调函数返回值的新数组(译者注:也就是遍历数组,并通过callback对数组元素进行操作,并将所有操作结果放入数组中并返回该数组)。 var a1 = [‘a’, ‘b’, ‘c’]; var a2 = a1.map(function(item) { return item.toUpperCase(); }); console.log(a2); // logs A,B,C 15.filter(callback[, thisObject]) 返回一个包含所有在回调函数上返回为true的元素的新数组(译者注:callback在这里担任的是过滤器的角色,当元素符合条件,过滤器就返回true,而filter则会返回所有符合过滤条件的元素)。 var a1 = [‘a’, 10, ‘b’, 20, ‘c’, 30]; var a2 = a1.filter(function(item) { return typeof item == ‘number’; }); console.log(a2); // logs 10,20,30 16.every(callback[, thisObject]) 当数组中每一个元素在callback上被返回true时就返回true(译者注:同上,every其实类似filter,只不过它的功能是判断是不是数组中的所有元素都符合条件,并且返回的是布尔值)。 function isNumber(value){ return typeof value == ‘number’; } var a1 = [1, 2, 3]; console.log(a1.every(isNumber)); // logs true var a2 = [1, ‘2’, 3]; console.log(a2.every(isNumber)); // logs false 17.some(callback[, thisObject]) 只要数组中有一项在callback上被返回true,就返回true(译者注:同上,类似every,不过前者要求都符合筛选条件才返回true,后者只要有符合条件的就返回true)。 function isNumber(value){ return typeof value == ‘number’; } var a1 = [1, 2, 3]; console.log(a1.some(isNumber)); // logs true var a2 = [1, ‘2’, 3]; console.log(a2.some(isNumber)); // logs true var a3 = [‘1’, ‘2’, ‘3’]; console.log(a3.some(isNumber)); // logs false 以上方法都带一个被称为迭代方法的的回调函数,因为他们以某种方式迭代整个数组。都有一个可选的第二参数 thisObject,如果提供了这个参数,thisObject 变成回调函数内部的 this 关键字的值。如果没有提供,例如函数在一个显示的对象上下文外被调用时,this 将引用全局对象(window). 实际上在调用回调函数时传入了3个参数。第一个是当前元素项的值,第二个是它在数组中的索引,第三个是数组本身的一个引用。 JavaScript 函数忽略任何没有在参数列表中命名的参数,因此提供一个只有一个参数的回调函数是安全的,例如 alert 。 19.reduce(callback[, initialValue]) 使用回调函数 callback(firstValue, secondValue) 把数组列表计算成一个单一值(译者注:他数组元素两两递归处理的方式把数组计算成一个值) var a = [10, 20, 30]; var total = a.reduce(function(first, second) { return first + second; }, 0); console.log(total) // Prints 60 reduceRight(callback[, initalvalue]) 和 reduce()相似,但这从最后一个元素开始的。 reduce 和 reduceRight 是迭代数组方法中最不被人熟知的两个函数.。他们应该使用在那些需要把数组的元素两两递归处理,并最终计算成一个单一结果的算法。 -->