数组的一些方法属性介绍

来源:互联网 发布:青岛城阳灭门案 知乎 编辑:程序博客网 时间:2024/05/16 06:06

声明数组的两种方式:

    1.    构造函数的方式
            var array obj = new Array();    创建一个数组;
            var arrayobj = new Array(size);    创建一个指定长度的数组;
    2.    声明字面量的方式
            var arr = [];

数组赋值注意事项:

    数组里面能够存放任意类型的值,并且可以同时存放字符串以及数字,但这样会以后数组的调用造成隐患,所以数字最好按数据类型分类存放;

数组的索引

    数组是有序的,数组中每一个元素都有一个索引,索引是从0开始的;

数组的长度

    数组有一个length属性,指代数组的长度,即数组中元素的个数;

数组遍历

  1. for(var i = 0; i < arr.length;i++) {
  2. console.log(arr[i]);
  3. }

数组元素的添加

    array.push();    将元素添加到数组结尾,返回数组长度;
    array.unshift();    将元素添加到数组开始位置;

数组元素的删除:

    array.pop();    移除数组中最后一个元素;
    array.shift();    移除数组第一个元素;
    array.splice(1,2,"aa","bb");
            值说明:
            1.开始要删除的下标;
            2.要移除的个数;
            "aa","bb". 被删除的下标重新赋值;

数组的截取(浅复制,不影响原来的数组)

    array.slice(start,[end]);

数组的合并

    array.concat(item[item]);

数组的排序

    array.reverse();    反转数组;
    array.sort();    对数组元素进行排序;

查找数组元素出现位置

    array.indexof();    查找元素第一次的位置下标;
    array.lastIndexof();    查找元素最后一次出现的位置下标;如果有两个值,第二个参数表示从第几个下标开始查找;

稀疏数组

    数组中存在未赋值的空位置;

数组方法


forEach();

        遍历数组的每一个值与下标,依次传递给回调函数供其使用。        作用: 就是为了简化变化数组的过程。        语法: arr.forEach(function(val, i, arr){});
var arr = ['cba', 'nba', 'bbc', 'aac', 'ic'];// 普通方式遍历数组for (var i = 0, len = arr.length; i < len; i++) {    console.log(arr[i]);}// 通过forEach方法来遍历arr.forEach(function(val) {    console.log(val);});

map();

        遍历数组的每一个值与下标,依次传递给回调;        然后接收回调函数返回结果,把这些结果组成一个新数组返回。        作用:为了通过一组数据映射成另外一组数据。        语法:arr.map(function(val, i, arr){return xxx});
var numArr = [1, 3, 5, 8, 10];// 普通方式实现var mapArr = [];for (var i = 0, len = numArr.length; i < len; i++) {    mapArr.push(numArr[i] * 10);}console.log(mapArr);// 利用map方法,把arr中的所有值放大10console.log(numArr.map(function (val) {    return val * 10;}));

filter();

        遍历数组的每一个值与下标,依次传递给回调;        如果回调函数执行的结果布尔值为true;        就会保留这个值,最终返回所有被保留的值组成的新数组;        作用:为了过滤那些不需要的数据;        语法:arr.filter(function(val, i, arr){return true})
var numArr = [1, 100, 50, 20, 33, 5, 73, 21];// 大于50的留下,普通方式var newArr = [];for (var i = 0, len = numArr.length; i < len; i++) {    if (numArr[i] >= 50) {        newArr.push(numArr[i]);    }}console.log(newArr);// 大于50的留下,利用filter方法console.log(numArr.filter(function (val) {    return val >= 50;}));

some();

        遍历数组的每一个值与下标,依次传递给回调,        如果回调中有一个返回true,那么some的结果就为true。        可以认为是||运算符。        some在遇到回调为true的时候,会终止剩余的迭代。        作用:判断一组数据是否含有符合某种规则的数据。        语法:arr.some(function(val, i, arr){return true})
var arr = [1, 'str', function(){}, null, 43, 'nba'];// 判断数组中是否含有字符串类型的数据var has = false;for (var i = 0, len = arr.length; i < len; i++) {    if (typeof arr[i] === 'string') {        has = true;        break;    }}console.log(has);// 使用some完成console.log(arr.some(function (val) {    // some遍历到第二个值的时候,我们返回的truesome就会终止遍历    //console.log(arguments);    if (typeof val === 'string') {        return true;    }}));

var arr = [10, 8, 34, 67, 345, 76];// 遍历数组,如果遇到奇数,那么终止遍历,否则打印其值arr.some(function(val){    // 遇到奇数,返回true,告诉some终止遍历    if (val % 2 !== 0) {        return true;    }    console.log(val);});

every();

        遍历数组的每一个值与下标,依次传递给回调,        如果所有的回调中都返回true,那么every的结果才为true。        可以认为是&&运算符。        every在遇到回调为false的时候,会终止剩余的迭代。        作用:判断一组数据是否全部符合某种规则的数据。        语法:arr.every(function(val, i, arr){return true});
var arr = [1, 2, 4, 'ds', Function];// 判断数组中的数据是否全部为数值console.log(arr.every(function (val) {    // 如果为number,返回true    // 否则利用函数的默认返回值返回undefined(相当于是false)    if (typeof val === 'number') {        return true;    }}));

var arr = [10, 8, 34, 67, 345, 76];// 遍历数组,如果遇到奇数,那么终止遍历,否则打印其值arr.every(function(val){    // 遇到偶数,返回true,告诉every继续遍历吧    if (val % 2 === 0) {        console.log(val);        return true;    }});


join()

       将所有元素转换为字符串拼接在一起,返回生成的字符串,如果不指定分隔符,默认使用逗号;
       join() 方法是split() 方法的逆向操作, 后者是将字符串分割成若干块来创建一个数组;
var a = [1, 2, 3];a.join();       // '1, 2, 3'a.join(' ');    // '1 2 3'a.join('');     // '123'

reverse()

       将数组在原数组的基础上对元素逆向排序,不产生新的数组;
var a = [1,2,3];console.log(a.reverse());   //3,2,1

sort()

        将数组中的元素排序并返回排序后的数组,当不带参数调用时, 数组元素已字母顺序表排序;
        如果数组包含underfind元素, 它们会被排到数组的尾部;
var a = ['a','c','b'];console.log(a.sort());      // a,b,c
        如果需要按照其他方式来排序, 需要给sort()方法传递一个比较函数;
var a = [33, 4, 11, 22];a.sort();       // 11,22,33,4a.sort(function (a, b) {    return a - b;       // 根据顺序,返回负数>0>正数});a.sort(function (a, b) {    return b - a;})
//将字符串数组按照字符长度从小到大排列var arr = ["a", "bsdfdsfb", "cccd", "ddd"];arr.sort(function (a, b) {    return b.length - a.length;});console.log(arr);


concat()

        创建并返回新的数组, 他的元素包含调用concat()的原始数组的元素和coancat()的每一个参数;
var a = [1,2,3]a.concat(4,5);          // 1,2,3,4,5a.concat([4,5]);        // 1,2,3,4,5a.concat([4,5],[6,7]);  // 1,2,3,4,5,6,7a.concat(4,[5,[6,7]]);  // 1,2,3,4,5,[6,7]

slice()

        返回指定数组的一个片段或子数组.他的两个参数分别指定了开始和结束的位置(包头不包尾);
        如果只有一个参数, 返回的数组将包含从开始位置到数组结尾的所有元素;
        如果参数是负数, 它表示相对于数组最后一个元素的位置,如-1 表示最后一个元素;

toString()

        将数组转化为字符串;

给数组的原型添加方法


 这里以给数组添加一个计算数组长度的方法为例:
  1. Array.prototype.conLength = function(){
  2. console.log(this.length);
  3. }
  4. var arr = [];
  5. arr.push(1,4,7);
  6. arr.conLength();
    结果为数组传入值个数:3;

判断真伪数组

function isArrayLike(arrayLike) {    /*    * 1、判断是不是对象,不是直接返回false    * 2、是function或者window,也直接返回false    * 3、再判断是不是真数组,是返回true    * 4、不是真数组继续判断    * 4.1、判断对象的length是不是为0,是返回true    * 4.2、判断length是不是number类型,而且>0,同时还需要拥有length - 1这个属性,满足返回true    * 5、默认返回false    * */    // functionwindow、非对象直接返回false    if(typeof arrayLike !== 'object' || arrayLike === null            || typeof arrayLike === 'function' || arrayLike === window ) {        return false    }    // 是真数组返回true    if({}.toString.call(arrayLike) === '[object Array]') {        return true;    }    // 是伪数组返回true    return arrayLike.length === 0 ||            (typeof arrayLike.length === 'number' && arrayLike.length > 0                && (arrayLike.length - 1) in arrayLike);    return false;}

    



































    
        
0 0
原创粉丝点击