js常用的数组方法

数组方法的使用格式为:数组名.方法 

一、ECMAScript3在Array.prototype中定义的一些数组方法:

1. push(参数1,参数2. . . )

有参数,作用是在原数组后添加元素,会改变原数组,返回值为新数组的长度

var arr = [520, 1, 3];
var newArr = arr.push(1, 4);
alert(newArr); // 5
alert(arr);    // [520, 1, 3, 1, 4]

 

2. pop()

无参数,作用是将原数组最后一个元素删除,会改变原数组,返回值为删除元素的值

var arr = [520, 1, 3, 1, 4, "fake"];
var newArr = arr.pop();
alert(newArr);  // "fake"
alert(arr);     // [520, 1, 3, 1, 4]

 

3. shift()

无参数,作用是删除原数组的首个元素,会改变原数组,返回值为删除元素的值

var arr = ["fake", 520, 1, 3, 1, 4];
var newArr = arr.shift();
alert(newArr); // "fake"
alert(arr);    // [520, 1, 3, 1, 4]

 

4. unshift(参数1,参数2. . . )

有参数,作用是在原数组元素之前添加元素,会改变原数组,返回值为新数组的长度

var arr = [1, 3, 1, 4];
var newArr = arr.unshift(520);
alert(newArr); // 5
alert(arr);    // [520, 1, 3, 1, 4]

 

5. concat(参数)

有参数(可以为数组或数据,如果是数组,会将该数组元素拆分出来进行合并 ),作用是复制原数组生成另一个数组,然后与参数拼接成一个新数组,返回值为新数组不改变原数组。

var arr1 = [520];
var arr2 = [1, 3, 1, 4];
var newArr1 = arr1.concat(arr2);
var newArr2 = arr1.concat(3, 3, 4, 4);
alert(newArr1); // [520, 1, 3, 1, 4]
alert(newArr2); // [520, 3, 3, 4, 4]
alert(arr1);    // [520]

 

6. slice(start,end)

start ,end分别为起始结束位置,对应指定数组元素的索引值(终止位置的元素选不到,可以看似为 [start , end )),该方法的作用是从原数组选取一段元素构成新数组,返回值为新数组不改变原数组

var arr = ["tony", 520, 1, 3, 1, 4, "fake"];
var newArr = arr.slice(1, 6);
alert(newArr); // [520, 1, 3, 1, 4]
alert(arr);    // ["tony", 520, 1, 3, 1, 4, "fake"]

 

7. splice(start, length, 空/参数)

start为截取的初始位置,length为截取长度,参数可以为空,若有参数,则放在start的位置,该方法可用于数组元素的添加、删除或者修改(先删除,后添加 ),返回值为截取元素组成的数组,原数组改变

var arr = [520, 1, 3, 1, 4];
var newArr1 = arr.splice(1, 0, "tom");
var newArr2 = arr.splice(2, 2);
var newArr3 = arr.splice(1, 3, "forever");
alert(newArr1); // []
alert(newArr2); // [1, 3]
alert(newArr3); // ["tom", 1, 4]
alert(arr)      // [520, "forever"]

 

8. join(空/连接符)

该方法是将数组元素以指定连接符拼接成一个新字符串,如果为空,则按默认" , "进行分割,返回值为新字符串不改变原数组

var arr = [520, 1, 3, 1, 4];
var newArr1 = arr.join("-");
var newArr2 = arr.join();
alert(newArr1); // "520-1-3-1-4"
alert(newArr2); // "520,1,3,1,4"
alert(arr);     // [520, 1, 3, 1, 4]

 

9. reverse()

无参数,作用是将原数组元素逆序,返回值为逆序过后的新数组,原数组改变

var arr = [520, 1, 3, 1, 4];
var newArr = arr.reverse();
alert(newArr);  // [4, 1, 3, 1, 520]
alert(arr);     // [4, 1, 3, 1, 520]

 

10. sort(空/ 参数)

该方法是用于数组的排序,可以有参数,该参数为一个函数,代表怎么去排序(固定用法 );无参数时,排序按字符串大小排序(即逐位进行比较),返回值为排序过后的新数组会改变原数组。

var arr = [11, 66, 34, 77, 15, 5];
var newArr = arr.sort(function(value1, value2) {
            return value1 - value2;
});
alert(newArr);        // [5, 11, 15, 34, 66, 77]
alert(newArr.sort()); // [11, 15, 34, 5, 66, 77]
alert(arr);           // [11, 15, 34, 5, 66, 77]

 

11. toString()

该方法是将数组转化为字符串,将数组转化为字符串,不会改变原数组,返回值为新字符串

var arr = [11, 66, 34, 77, 15, 5];
var newArr = arr.toString();
alert(newArr); // "11,66,34,77,15,5"
alert(arr);    // [11, 66, 34, 77, 15, 5]     

 

二、ECMAScript5中新增的一些数组方法:

12. forEach(function(item, index/无, arr/无))

该方法是从同到尾遍历数组,为每个元素调用指定的函数,返回值为undefined,如上所述,传递的函数作为forEach()的第一个函数,然后forEach()使用三个参数调用该函数:数组元素、元素的索引和数组本身。 

var arr = [1, 2, 3, 4, 5];
//计算数组元素的和
var sum = 0;
arr.forEach(function(value) {
        sum += value;
})
alert(sum);  // 15
//每个数组元素的值自加一
arr.forEach(function(v, i, a) {
        a[i] = v + 1;
})
alert(arr);  // [2, 3, 4, 5, 6]

  

13. map(函数)

map()方法将数组的每个元素传递给指定的函数,返回值为新数组不改变原数组。

var arr = [1, 2, 3];
var a = arr.map(function(x) {
        return x * x;
})
alert(a);    //[1, 4, 9]
alert(arr); //[1, 2, 3]

  

14. filter(函数)

filter() 方法是将数组的每个元素传递给指定函数,从中筛选出符合条件的元素组成新数组,返回值为新数组不会改变原数组。

var arr = [1, 3, 5, 7];
var newArr = arr.filter(function(x) {
        return x > 3;
})
alert(newArr); //[5, 7]
alert(arr);    //[1, 3, 5, 7]

  

15. every(函数)和some(函数)

这两个方法都是对数组的逻辑判定,返回值为true或false,不改变数组。

every()就像数学中的 "∀",当且仅当针对数组中的所有元素调用判定函数的返回值为true,它才返回true,否则为false;some()就像 "∃",数组中至少有一个元素调用判定函数返回true,它就返回true,当且仅当数组中的所有元素调用判定函数的返回值为false,它才返回false。

注意:every()在一旦判定到返回值为false时就直接返回false,停止遍历后面的数组元素,而some()相反,在判定到返回值为true时,就直接返回true而不遍历后面的数组元素。 

var arr = [1, 2, 3, 4, 5];
var a = arr.every(function(x) {
        return x < 10;
})
var b = arr.every(function(x) {
        return x > 3;
})
alert(a);   // true
alert(b);   // false
alert(arr); //[1, 2, 3, 4, 5] 
var arr2 = [1, 2, 3, 4, 5];
var a = arr2.some(function(x) {
        return x > 10;
})
var b = arr2.some(function(x) {
        return x > 3;
})
alert(a);   //false
alert(b);   //ture
alert(arr2); //[1, 2, 3, 4, 5]

 

16. indexOf(item, start(可选))

该方法是查找数组中某个指定元素首次出现的位置,start为在数组中开始检索的位置,省略start参数则默认从首位开始检索,若元素未检测到,则返回值为 - 1,若存在,则返回所匹配元素的索引值。

var arr = ["火车", "高铁", "飞机", "自行车", "摩托车", "自行车"];
var a = arr.indexOf("自行车");
var b = arr.indexOf(3);
var c = arr.indexOf("自行车", 4);
alert(a);   // 3
alert(b);   // -1
alert(c);   // 5

 

有什么不对的地方请兄der指出来


可以在MDN菜鸟教程中找到更多更详细的方法及介绍

 

posted @ 2020-04-21 21:36  我就吃亿口-  阅读(227)  评论(0)    收藏  举报