js中的sort()及数组操作方法

js中的sort()和java中的有很大的不同,js中默认是调用每个数组项的 toString() 转型方法,然后比较得到的字符串(Unicode字符集编码),两两比较以确定如何排序,类似冒泡。

Unicode:http://tool.chinaz.com/tools/unicode.aspx

于是需要传入一个比较函数,如:

 

var arr = [4,3,6,5,7,2,1];
arr.sort(function(a,b){
    return b-a;  //b-a<0时,不交换,b-a>0时,交换
});
console.log(arr);
//输出结果[7,6,5,4,3,2,1]

 

concat():全称concatenate,将数组连接起来;不改变原数组

slice():在只有一个参数的情况下, slice() 方法返回从该参数指定位置开始到当前数组末尾的所有项。如果有两个参数,该方法返回起始和结束位置之间的项——但不包括结束位置的项,如果 slice() 方法的参数中有一个负数,则用数组长度加上该数来确定相应的位置。例如,在一个包含 5 项的数组上调用 slice(-2,-1) 与调用 slice(3,4) 得到的结果相同。如果结束位置小于起始位置,则返回空数组。该操作不会影响原数组

splice():

删除操作:splice(a,b)指定两项,要删除的第一项的位置和要删除的项数

插入、替换操作:splice(a,b,c)指定三项,起始位置、要删除的项数、要插入的项

indexOf()和lastIndexOf():都接收两个参数,即要查找的数和查找的起始位置,找到了返回位置,没有找到返回-1

 

数组的迭代方法(选自《JavaScript高级程序设计》)

ECMAScript 5 为数组定义了 5 个迭代方法。每个方法都接收两个参数:要在每一项上运行的函数和
(可选的)运行该函数的作用域对象——影响 this 的值。传入这些方法中的函数会接收三个参数:数
组项的值、该项在数组中的位置和数组对象本身。根据使用的方法不同,这个函数执行后的返回值可能
会也可能不会影响方法的返回值。以下是这 5 个迭代方法的作用。
 every() :对数组中的每一项运行给定函数,如果该函数对每一项都返回 true ,则返回 true 。
 filter() :对数组中的每一项运行给定函数,返回该函数会返回 true 的项组成的数组。
 forEach() :对数组中的每一项运行给定函数。这个方法没有返回值。
 map() :对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组。
 some() :对数组中的每一项运行给定函数,如果该函数对任一项返回 true ,则返回 true 。

以上方法都不会修改数组中的包含的值。

//every方法

例:var numbers = [1,2,3,4,5,4,3,2,1];
var everyResult = numbers.every(function(item, index, array){
return (item > 2);
});
alert(everyResult); //false

//some方法

var someResult = numbers.some(function(item, index, array){
return (item > 2);
});
alert(someResult); //true

//filter方法(不对空内容进行操作)

var numbers = [1,2,3,4,5,4,3,2,1];
var filterResult = numbers.filter(function(item, index, array){
return (item > 2);
});

alert(filterResult); //[3,4,5,4,3]

//map方法

var numbers = [1,2,3,4,5,4,3,2,1];
var mapResult = numbers.map(function(item, index, array){
return item * 2;
});

alert(mapResult); //[2,4,6,8,10,8,6,4,2]

//forEach方法(该方法没有返回值)

var numbers = [1,2,3,4,5,4,3,2,1];
numbers.forEach(function(item, index, array){
//执行某些操作

});

归并方法——reduce()和reduceRight()

第一次执行回调函数, prev 是 1, cur 是 2。第二次, prev 是 3(1 加 2 的结果), cur 是 3(数组
的第三项)。这个过程会持续到把数组中的每一项都访问一遍,最后返回结果。

var values = [1,2,3,4,5];
var sum = values.reduce(function(prev, cur, index, array){
return prev + cur;
});
alert(sum); //15

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值