JavaScript 数组的方法 数组的遍历

一、数组的方法

数组在js中经常用于保存数据,是操作频率非常高的数据类型,js也提供了很多方法来对数组进行操作。下面介绍常用的方法。

join()、push()、pop()、shift() 、 unshift()、sort()、reverse()、concat()、slice()、splice()、indexOf()、 lastIndexOf()、forEach() 、map() 、filter() 、every() 、some()

下面详细介绍一下各个方法的基本功能:

1、join() 原数组不会发生改变
join(separator): 将数组的元素组起一个字符串,以separator为分隔符,省略的话则用默认用逗号为分隔符,该方法只接收一个参数:即分隔符。

var arr = [1,2,3];
console.log(arr.join()); // 1,2,3
console.log(arr.join("-")); // 1-2-3
console.log(arr); // [1, 2, 3](原数组不变)

通过join()方法可以实现重复字符串,只需传入字符串以及重复的次数,就能返回重复后的字符串,函数如下:

function repeatString(str, n) {
return new Array(n + 1).join(str);
}
console.log(repeatString(“abc”, 3)); // abcabcabc
console.log(repeatString(“Hi”, 5)); // HiHiHiHiHi

2、push()和pop() 原数组会发生改变
push(): 可以接收任意数量的参数,把它们逐个添加到数组末尾,并返回修改后数组的长度
pop():数组末尾移除最后一项,减少数组的 length 值,然后返回移除的项

var arr = ["Lily","lucy","Tom"];
var count = arr.push("Jack","Sean");
console.log(count);       // 5
console.log(arr);         // ["Lily", "lucy", "Tom", "Jack", "Sean"]
var item = arr.pop();
console.log(item);       // Sean
console.log(arr);        // ["Lily", "lucy", "Tom", "Jack"]

3、shift() 和 unshift() 原数组会发生改变
shift():删除原数组第一项,并返回删除元素的值;如果数组为空则返回undefined 。
unshift:将参数添加到原数组开头,并返回数组的长度

这组方法和上面的push()和pop()方法正好对应,一个是操作数组的开头,一个是操作数组的结尾。

var arr = ["Lily","lucy","Tom"];
var count = arr.unshift("Jack","Sean");
console.log(count);         // 5
console.log(arr);          //["Jack", "Sean", "Lily", "lucy", "Tom"]
var item = arr.shift();
console.log(item);         // Jack
console.log(arr);          // ["Sean", "Lily", "lucy", "Tom"]

4、sort() 原数组会发生改变
sort():对数组内的数据进行排序(默认为升序),并且返回排过序的新数组。
注意:
4.1:这里的排序是针对字符的排序,先使用数组的toString()方法转为字符串,再逐位比较,3是大于12的,因为首位3>1,不要与Number型的数据排序混淆

4.2:str2数组中增加了三个字符,可以看到,比较的时候,zoom是最大的,因为首位的英文字母通过ASCII码可以转为相应的数值,再根据数值比较

var str1 = [12,2,43,5,2,5];
var str2 = [92,2,43,"hello",5,2,5];
console.log(str1.sort());        //[12, 2, 2, 43, 5, 5]
console.log(str1);            //[12, 2, 2, 43, 5, 5]
console.log(str2.sort());        //[2, 2, 43, 5, 5, 92, "abc", "hello", "zoom"]
console.log(str2);            //[2, 2, 43, 5, 5, 92, "abc", "hello", "zoom"]

4.3:排序问题

参数:sort(callback) 如果需要按照数值排序,需要传参。sort(callback),callback为回调函数,该函数应该具有两个参数,比较这两个参数,然后返回一个用于说明这两个值的相对顺序的数字(a-b)。其返回值如下:

  • 若 a 小于 b,返回一个小于 0 的值。
  • 若 a 等于 b,则返回 0。
  • 若 a 大于 b,则返回一个大于 0 的值。
var str3 = [92,2,43,5,2,5];     
console.log(str3.sort(fn));        //[2, 2, 5, 5, 43, 92]
console.log(str3);             //[2, 2, 5, 5, 43, 92]
function fn (a,b){
    return a-b;
 }

5、reverse() 原数组会发生改变
reverse()将:数组的数据进行反转,并且返回反转后的数组

var str1 = [12,2,"hello"];
console.log(str1.reverse());      //["hello", 2, 12]
console.log(str1);            //["hello", 2, 12]

6、concat() 原数组不会发生改变
concat():合并数组,可以合并一个或多个数组,会返回合并数组之后的数据

7、slice() 原数组不会发生改变

8、splice() 原数组会发生改变

9、indexOf()和 lastIndexOf() 原数组不会发生改变

10、forEach()原数组不会发生改变

11、map()原数组不会发生改变

12、filter()原数组不会发生改变

13、every()原数组不会发生改变

14、some()原数组不会发生改变

15、reduce()和 reduceRight()原数组不会发生改变

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章