JS数组的创建与使用方法

1、Array构造函数创建数组

var arr1 = new Array();     //创建一个空数组
var arr2 = new Array(20);   //创建一个包含20项的数组
var arr3 = new Array('ni', 'min', 'na');    //创建一个包含3个字符串的数组

2、数组字面量创建数组

var arr1 = [];    //创建一个空数组
var arr2 = [20];    //创建一个包含1项的数组
var arr3 = ['ni', 'min', 'na'];

3、读取和设置数组的值

var arr8 = ['ni', 'min', 'na'];
arr8[arr8.length] = 'xiaomin';        //在下标为3处(也就是数组尾部)添加新的一项
console.log(arr8.length)            // 4 现在arr8数组长度为4
console.log(arr8[arr8.length-1]);    // xiaomin 数组最后一项的值
arr8.length = arr8.length-1;        //删除数组最后一项
console.log(arr8.length);            //3 现在arr8数组长度为3
console.log(arr8[arr8.length-1])    //na 数组当前最后一项的值

4、Array.isArray(对象名) 方法判断对象是否为数组

console.log(Array.isArray(arr8));    //true
var obj = new Object();
console.log(Array.isArray(obj));    //false
var func = new Function();
console.log(Array.isArray(func));    //false
var date = new Date();
console.log(Array.isArray(date));    //false

6、join()方法

var arr9 = [10, 'ni', 'na', 'min', 99, true];
console.log(arr9.join());        //10,ni,na,min,99,true
console.log(arr9.join('-'));    //10-ni-na-min-99-true

7、创建一个用字符串abc分隔的拥有4个项成员的数组

function repeatString(str, n){
    return new Array(n+1).join(str);
}
console.log(repeatString('abc', 3));

8、push()和pop()

var arr10 = ['ni', 'na', 'min'];
var count = arr10.push(10, 'xia');
console.log(count);        //5
console.log(arr10);        //(5) ["ni", "na", "min", 10, "xia"]

var val = arr10.pop();
console.log(val);        //xia

9、shift()和unshift()

var arr11 = ['ni', 'na', 'min'];
var val = arr11.shift();
console.log(val);    //ni
console.log(arr11);    //(2) ["na", "min"]

var count = arr11.unshift('nitx');
console.log(count);    //3
console.log(arr11);    //(3) ["nitx", "na", "min"]

var arr12 = ["a", "b", "c", "d"];
console.log(arr12);
console.log(arr12.sort());

function compare(val1, val2){
    if(val1 < val2){
        return 1;
    }else if(val1 > val2){
        return -1;
    }else{
        return 0;
    }
}

var arr13 = [12, 14, 52, 3];
console.log(arr13.sort(compare));  //(4) [52, 14, 12, 3]

var arr14 = [12, 14, 52, 3];
console.log(arr14.reverse());     //(4) [3, 52, 14, 12]
console.log(arr14);               //(4) [3, 52, 14, 12]   使用reverse()方法反转原数组后,原数组项改变

var arr15 = [3, 4, 9];
var arr16 = arr15.concat([11, 13],6);
console.log(arr16);     //(6) [3, 4, 9, 11, 13, 6] 原数组副本
console.log(arr15);     //(3) [3, 4, 9] 原数组

var arr15 = [3, 4, 9];
var arr17 = arr15.concat([11, [12, 17]]);
console.log(arr17);     //(5) [3, 4, 9, 11, Array(2)]
console.log(arr17[4]);  //(2) [12, 17]  传入二维数组参数的情况,会将二维数组参数中数组项当作一项传入到原数组中
console.log(arr15);     //(3) [3, 4, 9] 原数组

var arr18 = [1, 3, 5, 7, 9, 11];
var arrCopy = arr18.slice(1);
var arrCopy2 = arr18.slice(1, 4);
var arrCopy3 = arr18.slice(1, -2);
var arrCopy4 = arr18.slice(-4, -1);

console.log(arrCopy);       //(5) [3, 5, 7, 9, 11]  一个参数时,返回从基于0的该参数位置数到原数组末尾项组成的新数组
console.log(arrCopy2);      //(3) [3, 5, 7]         两个参数时,返回从基于0的初始下标位置项到结束下标位置项组成的新数组,初始下标<=新数组<结束下标
console.log(arrCopy3);      //(3) [3, 5, 7]         参数中有负数时,用基于1的数组项数减去负数所得值作为基于0的参数下标来计算新数组包含项的区间
console.log(arrCopy4);      //(3) [5, 7, 9]
console.log(arr18);         //(6) [1, 3, 5, 7, 9, 11] 原数组没有发生改变

var arr19 = [1, 3, 5, 7, 9, 11];
console.log(arr19.indexOf(5));      //2 返回数组值5在数组中的位置
console.log(arr19.lastIndexOf(5));  //2

console.log(arr19.indexOf(5, 2));       //2 第二个参数2表示从基于0的数组下标起始位置(2)开始向后索引
console.log(arr19.lastIndexOf(5, 4));   //2 第二个参数4表示从基于0的数组下标起始位置(4)开始向前索引

console.log(arr19.indexOf(5, 3)); //-1  第二个参数3表示从基于0的数组下标起始位置(3)开始向后索引,由于数组项5在数组中的位置是2,所以从第基于0的第3项开始向后索引时没有找到值5,则返回-1

console.log(arr19.indexOf("5"));  //-1 由于这两个索引方法在比较第一个参数与数组中的每一个项时,使用的是全等操作符,而"5"与原数组中任一项都不相等,所以找不到该值,返回-1


var arr20 = [1, 3, 5, 7, 9, 11];

//删除 
var arrRemoved = arr20.splice(0, 2);    //要删除的第一项的位置、要删除的项数
console.log(arr20);         //(4) [5, 7, 9, 11]
console.log(arrRemoved);    //(2) [1, 3] 返回被删除的项组成的新数组

//插入
var arrRemoved2 = arr20.splice(2, 0, 4, 6); //起始位置、0(要删除的项数)、要插入的项
console.log(arr20);         //(6) [5, 7, 4, 6, 9, 11]  
console.log(arrRemoved2);   //[] 没有删除项时,返回的是空数组

//替换
var arrRemoved3 = arr20.splice(1, 1, 2, 4); //起始位置、要删除的项数、要插入的任意数量的项
console.log(arr20);         //(7) [5, 2, 4, 4, 6, 9, 11]
console.log(arrRemoved3);   // [7]

原文发布于微信公众号 - 前端小二(frontendxiao2)

原文发表时间:2018-12-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券