JavaScript之数组常用的方法

一、concat()

concat() 方法用于连接两个或多个数组。该方法不会改变现有的数组,仅会返回被连接数组的一个副本。

var arr1 = [1,2,3];
var arr2 = [4,5];
var arr3 = arr2.concat(arr1);
var arr4 = arr1.concat(arr2);
console.log(arr3);//[4, 5, 1, 2, 3]
console.log(arr4);//[1, 2, 3, 4, 5]

二、join()

join() 方法用于把数组中的所有元素放入一个字符串。元素是通过指定的分隔符进行分隔的,默认使用','号分割,不改变原数组。

var arr1 = [1,2,3];
var arr2=arr1.join();
console.log(arr2);//1,2,3
var arr3=arr1.join('*');
console.log(arr3);//1*2*3

 三、push()

push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度。末尾添加,返回的是长度,会改变原数组。

var arr1 = [1,2,3];
var arr2=arr1.push(5,'x');
console.log(arr1);//[1, 2, 3, 4, "x"]
console.log(arr2);//5

四、pop()

pop() 方法用于删除数组的最后一个元素并返回删除的元素,会改变原数组

var a=[4,5,6,7,8,9,10]
console.log(a.pop());//10
console.log(a);//[4, 5, 6, 7, 8, 9]

五、shift()

shift() 方法用于把数组的第一个元素从其中删除,并返回第一个元素的值。返回第一个元素,改变原数组。

var arr1 = [1,2,3];
var arr2=arr1.shift();
console.log(arr1);//[2, 3]
console.log(arr2);//1

六、unshift()

unshift() 方法可向数组的开头添加一个或更多元素,并返回新的长度。返回新长度,改变原数组。

var arr1 = [1,2,3];
var arr2=arr1.unshift(9,10);
console.log(arr1);//[9, 10, 1, 2, 3]
console.log(arr2);//5

七、slice()

slice() 方法返回一个新的数组,包含从 start 到 end (不包括该元素)的 arrayObject 中的元素。返回选定的元素,该方法不会修改原数组。

var arr1 = [1,2,3,4];
var arr2=[4,5,6,7,8,9,10];
var arr3 = arr1.slice(1,3);
var arr4 = arr2.slice(2,6);
console.log(arr1);//[1,2,3,4]
console.log(arr2);//[4,5,6,7,8,9,10]
console.log(arr3);//[2, 3]
console.log(arr4);//[6, 7, 8, 9]

八、splice()

splice() 方法可删除从 index 处开始的零个或多个元素,并且用参数列表中声明的一个或多个值来替换那些被删除的元素。如果从 arrayObject 中删除了元素,则返回的是含有被删除的元素的数组。splice() 方法会直接对数组进行修改。

var a=[4,5,6,7,8,9,10];
console.log(a.splice(1,0,8));//[]
console.log(a);//[4, 8, 5, 6, 7, 8, 9, 10]
var b=[4,5,6,7,8,9,10];
console.log(b.splice(2,5,8,9));//[6, 7, 8, 9, 10]
console.log(b);//[4, 5, 8, 9]

九、sort排序

按照 Unicode code 位置排序,默认升序

var fruit = ['cherries', 'apples', 'bananas'];
fruit.sort(); // ['apples', 'bananas', 'cherries']
var scores = [1, 10, 21, 2];
scores.sort(); // [1, 10, 2, 21]

十、reverse()

reverse() 方法用于颠倒数组中元素的顺序。返回的是颠倒后的数组,会改变原数组。

var a =['a','b','c','d'];
var b=[6,4,7,8]
console.log(a.reverse());//["d", "c", "b", "a"]
console.log(b.reverse());//[8, 7, 4, 6]

十一、indexOf 和 lastIndexOf

indexOf 和 lastIndexOf 都接受两个参数:查找的值、查找起始位置,不存在,返回 -1 ;存在,返回位置。indexOf 是从前往后查找, lastIndexOf 是从后往前查找。

//indexOf
var a = [2, 9, 9];
a.indexOf(2); // 0
a.indexOf(7); // -1
 
if (a.indexOf(7) === -1) {
 // element doesn't exist in array
}
//lastIndexOf
 
var numbers = [2, 5, 9, 2];
numbers.lastIndexOf(2);  // 3
numbers.lastIndexOf(7);  // -1
numbers.lastIndexOf(2, 3); // 3
numbers.lastIndexOf(2, 2); // 0
numbers.lastIndexOf(2, -2); // 0
numbers.lastIndexOf(2, -1); // 3

 十二、some()&every()

some方法是只要有一个数组成员的返回值为true,则返回true,否则false;
every方法是需要每一个返回值为true,才能返回true,否则为false;

const arr = [3,4,4,5,4,6,5,7];
console.log( arr.some( function( item, index, array ){
    console.log( 'item=' + item + ',index='+index+',array='+array );
    return item > 3;
}));
//  item=3,index=0,array=3,4,4,5,4,6,5,7
//   item=4,index=1,array=3,4,4,5,4,6,5,7
//   true
console.log( arr.every( function( item, index, array ){
    console.log( 'item=' + item + ',index='+index+',array='+array );
    return item > 3;
}));
// item=3,index=0,array=3,4,4,5,4,6,5,7
//false

十三、Array.isArray()

用来判断是不是数据是不是一个数组,返回值为true或false。

const arr = [3,4,4,5,4,6,5,7];
console.log(Array.isArray(arr)) // true

十四、find()

返回符合传入测试(函数)条件的数组元素。

const arr = [3,4,4,5,4,6,5,7];
const a = test.find(item => item > 3);
console.log(a); //4(find() 方法返回通过测试(函数内判断)的数组的第一个元素的值。)
const b = test.find(item => item == 0);
console.log(b); //undefined(如果没有符合条件的元素返回 undefined)

十五、map()

依次遍历数组成员,根据遍历结果返回一个新数组。(map方法同样适用于字符串,但是不能直接调用,需要通过函数的call方法,间接使用,或者先将字符串川转为数组,再使用)(不会改变原始数组)。

const arr = [3,4,4,5,4,6,5,7];
const a = arr.map(item => item*2) 
console.log(a);// [6, 8, 8, 10, 8, 12, 10, 14]

十六、foreach()

跟map方法类似,遍历数组,区别是无返回值。

        var arr = [15, 8, 7, 8];
        var a =arr.forEach((item, index) => {
            console.log(index + ":" + item);
        }); 
        console.log(a); //undefined        

十七、filter()

一个过滤方法,参数是一个函数,所有的数组成员依次执行该函数,返回结果为 true 的成员组成一个新数组返回。(不会改变原始数组)。

const arr = [3,4,4,5,4,6,5,7];
const a = arr.filter(item => item % 3 > 1);
console.log(a); // [5, 5]

十八、reduce()

依次处理数组的每个成员,最终累计成一个值。
a:必填,累计变量;b:必填,当前变量;x: 可选,当前位置;y:可选,原数组。

 let arr = [58, 98, 56, 21, 54];
        //求和
        let result = arr.reduce(function(tem, item, index) {
            /*三个参数
            1.tem 代表中间数 
            2.item代表arr中的值
            3.index代表次数
              */
            console.log(index + ':' + tem);
            console.log(index + ':' + item);
            return tem + item;
        })
        console.log(result);//287
        //求平均数
        let result1 = arr.reduce(function(tem, item, index) {
            //不是最后一次
            if (index != arr.length - 1) {
                return tem + item;
            }
            //是最后一次
            else {
                return (tem + item) / arr.length;
            }
        });
        console.log(result1);//57.4
原文地址:https://www.cnblogs.com/meteorll/p/13951206.html