JavaScript 数组操作方法 和 ES5数组拓展 (2)

用于对数组进行排序,会改变原数组

var arr=[5,4,3,2,1] arr.sort() console.log(arr) //[1, 2, 3, 4, 5]

但是有一些情况下情况下会变成下面这样:

var arr=[7,8,9,10,11] arr.sort() console.log(arr) //[10, 11, 7, 8, 9]

因为按照字母表排序,7比10大,这时候我们需要传入自定义排序函数

var arr = [7,8,9,10,11] arr.sort(function(v1,v2){ return v1-v2 }) console.log(arr) //[7, 8, 9, 10, 11]

其他案例:

var users = [ { name: \'aaa\', age: 21 }, { name: \'baa\', age: 18 }, { name: \'abc\', age: 24 } ] // 按age 从小到大排序 var sortByAge = users.sort(function(v1, v2){ return v1.age > v2.age }) // 按name从大到小排序 var sortByName = users.sort(function(v1, v2){ return v1.name > v2.name })

ES5 数组拓展

ES5为Array做了大幅拓展

.indexOf / .lastIndexof

该方法用于查找数组内指定元素的位置,查到第一个之后返回其索引,没有找到则返回-1。lastIndexOf反向搜索,查到第一之后,返回其索引,但顺序还是取正序。

var arr = [2,3,4,"root","evenyao",3,8,7] console.log(arr.indexOf(3)) //1 console.log(arr.indexOf(11)) //-1 console.log(arr.lastIndexof(3)) //5 forEach

遍历数组,参数为一个回调函数,回调函数有三个参数

当前元素 value

当前元素索引值 i

整个数组 array

var arr = [1,2,3,4,5,6] arr.forEach(function(value,i,array){ array[i]= value + 1 }) console.log(arr); //[2, 3, 4, 5, 6, 7] var arr = [3,4,"evenyao"] arr.forEach(function(value,index){ console.log(\'\' + value+value) }) //33 //44 //evenyaoevenyao map

遍历数组,回调函数。返回值做操作之后组成一个新数组返回,新数组索引结构和原数组一致,原数组不变

var arr = [1,2,3,4,5,6] var arr2 = arr.map(function(val){ return val * val }) console.log(arr) //[1, 2, 3, 4, 5, 6] console.log(arr2) //[1, 4, 9, 16, 25, 36] every、some

逻辑判定,回调函数返回一个布尔值

every是所有函数的每个回调函数都返回true,才返回true,遇到false就终止执行,返回false

var arr = [1,2,-1,0,5] arr.every(function(val){ return val>0 }) //false

 

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzxsgf.html