下面来看下,用法 首先 定义一个数组: javascript
1. for循环,须要知道数组的长度,才能遍历,java
2. forEach循环,循环数组中每个元素并采起操做, 没有返回值, 能够不用知道数组长度数组
3. map函数,遍历数组每一个元素,并回调操做,须要返回值,返回值组成新的数组,原数组不变函数
4. filter函数, 过滤经过条件的元素组成一个新数组, 原数组不变spa
5. some函数,遍历数组中是否有符合条件的元素,返回Boolean值3d
6. every函数, 遍历数组中是否每一个元素都符合条件, 返回Boolean值对象
固然, 除了遍历数组以外,还有遍历对象,经常使用方法 inblog
in 不只能够用来 遍历对象,还能够用来遍历数组, 不过 i 对应与数组的 key值排序
介绍完遍历,下面说一下工做中遇到的状况,后台传给我一个对象数组,我须要排序再显示,看到有介绍用 sort 排序的方法,以下ip
var arr1 = [ {name: 'te', value: 5}, {name: 'te', value: 2}, {name: 'we', value: 3}, {name: 'ee', value: 1}, {name: 'ee', value: 4} ]; var by = function(type){ return function(o,p){ console.log(o,p); var a; var b; if(typeof o === 'object' && typeof p === 'object' && o && p){ a = o[type]; b = p[type]; if(a === b) { return 0; } if(typeof a === typeof b){ console.log(a, b); return a < b ? -1 : 1 } return typeof a < typeof b ? -1 : 1; }else { throw('字段有误'); } } } console.log(arr1.sort(by('value')));
显示以下:
总结:
排序应用场景不少 , 因此要弄清楚,明白,方可游刃有余。望小伙伴多多提意见!
补充: 后面发现, 后台传过来的数组中,每一个对象按 value 排序, value > 5的按顺序排在前面,小于5排在后面
思考后, 能够在原来的的方法中这样写,将数组分红2段,大于等于5和小于5,交换位置便可
var arr1 = [ {name: 'te', value: 5}, {name: 'te', value: 2}, {name: 'we', value: 3}, {name: 'ee', value: 1}, {name: 'ee', value: 4} ]; var sortObj = function(arr, type , num){ var by = function(type){ return function(o,p){ var a; var b; if(typeof o === 'object' && typeof p === 'object' && o && p){ a = o[type]; b = p[type]; if(a === b) { return 0; } if(typeof a === typeof b){ console.log(a, b); return a < b ? -1 : 1 } return typeof a < typeof b ? -1 : 1; }else { throw('字段有误'); } } }; var cacheArr = arr.sort(by('value')); //经过num 把数组分红两段 var arrBf = cacheArr.filter(function(item){ if(item.value < num){ return item; } }); var arrAf = cacheArr.filter(function(item){ if(item.value >= num){ return item; } }); //交换位置 便可获得 var newArr = arrAf.concat(arrBf); return newArr; }; console.log(sortObj(arr1, 'value' , 3));