JavaScript 语法:数组的定义及其常用属性与方法 (2)

情况一:当数组全部为数字时,需要将数字转换为字符串类型,再逐位比较,3是大于11的,因为首位3>1,所以3与11需要调换位置,以此这样比较下去,不要与Number型的数据排序混淆,例子如下:

var arr=[3,11,8,2,29]; console.log(arr.sort()); // [11, 2, 29, 3, 8]

注意:这里的比较是逐位比较,把字符串中的第一位依次比较,第一位较小的排在前面,较大的排在后面;当字符串中的第一位相同时,就比较字符串的第二位,第二位较小的排在前面,较大的排在后面,依次类推。

情况二:当数组中有字符串时,比较的时候,因为首位的英文字母通过 ASCII码 可以转为相应的数值,再根据数值比较。例子如下:

var arr=["hello","a","e",2,29]; console.log(arr.sort());//[2, 29, "a", "e", "hello"]

这里提到的 ASCII码 可以点击链接进去了解一下,以后再详细解释。

情况三:当数组中的值要进行真正数值的比较时,需要传参,sort(callback),callback为回调函数,这个函数应该具有两个参数,比较这两个参数,然后返回一个用于说明这两个值的相对顺序的数字(a-b),例子如下:

var arr=[6,2,45,829]; function fn (a,b){     return a-b; } console.log(arr.sort(fn));//[2, 6, 45, 829]

注意:比较函数可以按照自己的排序方式来自定义函数。

3、push():向数组末尾添加一个或多个元素,返回的是数组新的长度,会改变原来的数组。例子如下:

var arr=[6,2,45,829]; console.log(arr.push(8));// 5 console.log(arr.push(63,25));// 7

4、shift():删除数组中的第一元素,并返回删除的数据,会改变原来的数组。例子如下:

var arr=[6,2,45,829]; console.log(arr.shift());// 6

5、unshift():在数组的首位新增一个或多数据,并且返回新数组的长度,会改变原来的数组。例子如下:

var arr=[6,2,45,829]; console.log(arr.unshift(36));// 5

6、pop():删除数组的最后一位,并且返回删除的数据,会改变原来的数组,例子如下:

var arr=[6,2,45,829]; console.log(arr.pop()); //829

7、slice():截取指定位置的数组,并且返回截取的数组,不会改变原数组,这个方法接收两个参数slice(start,end),strat为必选,表示从第几位开始;end为可选,表示到第几位结束(不包含end位),省略表示到最后一位;start和end都可以为负数,负数时表示从最后一位开始算起,如-1表示最后一位。例子如下:

var arr=[6,2,45,829,56,48]; console.log(arr.slice(0,2)); //[6, 2] console.log(arr.slice(3));//[829, 56, 48] console.log(arr.slice(-4,-2));// [45, 829] console.log(arr.slice(-3));// [829, 56, 48] console.log(arr.slice(1,-3));// [2, 45]

8、splice():向数组中添加,或从数组删除,或替换数组中的元素,然后返回被删除/替换的元素。这个方法接收多个参数splice(start,num,data1,data2,...),strat表示从第几位开始;num表示删除的数量,如果后面还跟有删除数量相同的参数时,表示替换删除元素,例子如下:

var arr=[6,2,45,829,56,48]; console.log(arr.splice(3,3,"1","2","3"));// [829, 56, 48] console.log(arr);//[6, 2, 45, "1", "2", "3"]

9、concat():合并数组,可以合并一个或多个数组,会返回合并数组之后的数据,不会改变原来的数组。例子如下:

var arr=[6,2,45,829,56,48]; var arr1=["1","2","3"]; console.log(arr.concat(arr1));//[6, 2, 45, 829, 56, 48, "1", "2", "3"]

更多数组方法可查阅:JavaScrpt Array对象参考手册

以上仅是个人见解,若有不足之处欢迎在下方评论指出,那就先分享到这里!!

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

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