js-数组API

在这里插入图片描述

数组的创建方式

  • 字面量创建数组
var names = ["terry","larry","tom"]
//字符串数组
var name = "name"
// 可以接收任何类型的数据当做数组的元素
var arr = [12,name,true,"larry",{},function(){},[],null];
  • 使用构造函数

通过Array构造函数来创建数组

var names = new Array();   // 等价于 var names = []; 
// 如果一个参数,并且是number类型的整数,则代表的是数组的长度。如果是number类型的小数,则报错。如果是其他类型,则当做数组元素放进去。
var names = new Array(3);  //创建一个长度为3的数组
// 创建一个包含3个元素的数组 var arr = [undefined,undefined,undefined];
//var ages = new Array(2.4); //Error: Invalid array length
var ages = new Array("2.4"); 
var names = new Array('terry')  //创建一个包含1个元素的数组,该元素的值为'terry'
// 两个参数或者多个参数,当做数组元素放进去
var names = new Array('terry','robin') //创建一个数组,数组中的元素使用实参初始化

数组的API

1 数组序列化
  • toString 默认逗号分隔字符串

  • join 以指定字符分隔字符串

var arr=['zhangsan','lisi','wangwu',{a:1}];
// toString  
console.log(arr.toString());  // zhangsan,lisi,wangwu,[object Object]
// join  join('分隔符')  
console.log(arr.join('-'));   // zhangsan-lisi-wangwu-[object Object]
2 构造函数方法
  • Array.isArray判断是否是数组
  • Array.from从类数组对象或者可迭代对象中创建一个新的数组实例
  • Array.of根据一组参数来创建新的数组实例
// arguments 类数组对象
function foo() {
    console.log(Array.isArray(arguments),typeof arguments); //false object
}
foo(1,2)

// 从类数组对象或者可迭代对象中创建一个新的数组实例
var myArr = Array.from("BRIUP");
console.log(myArr,typeof myArr); // [ 'B', 'R', 'I', 'U', 'P' ] object

// 根据一组参数来创建新的数组实例
console.log(Array.of(1,2,3)); //[ 1, 2, 3 ]
3 栈与队列
  • Array.prototype.push 向数组末尾添加一个或多个元素,返回新的数组长度
语法:array.push(item1, item2, ..., itemX)
  • Array.prototype.pop 删除数组最后一个元素,并返回删除的元素
语法:array.pop()
  • Array.prototype.shift 删除数组第一个元素,并返回删除的元素
语法:array.shift()
  • Array.prototype.unshift 向数组的开头添加一个或多个元素,返回新的数组长度
语法:array.unshift(item1, item2, ..., itemX)
var arr=['zhangsan','lisi','wangwu'];

// push()  添加元素到末尾
var newLength=arr.push('zhaoliu',123);
console.log(newLength,arr);  //5 [ 'zhangsan', 'lisi', 'wangwu', 'zhaoliu', 123 ]

// pop() 删除最后一个元素
var delEle=arr.pop();
console.log(delEle,arr); //wangwu [ 'zhangsan', 'lisi' ]

// shift() 删除第一个元素
var delFirst=arr.shift()
console.log(delFirst,arr); //zhangsan [ 'lisi', 'wangwu' ]

// unshift() 在数组开头添加一个或多个元素
var newStartLen= arr.unshift("Lemon","Pineapple");
console.log(newStartLen,arr);  //5 [ 'Lemon', 'Pineapple', 'zhangsan', 'lisi', 'wangwu' ]
4 排序方法
  • Array.prototype.reverse 颠倒数组中的元素
语法:array.reverse()
  • Array.prototype.sort 对数组进行排序

如果调用该方法时没有使用参数,将按字母顺序(Ascall编码)对数组中的元素进行排序

语法:array.sort(sortfunction)
//数字排序
当 a>b 时,
a - b > 0  ,排序结果 ===> b,a (升序)
b - a < 0  ,排序结果 ===> a,b (降序)

当 b>a 时,
a - b < 0  ,排序结果 ===> a,b (升序)
b - a > 0  ,排序结果 ===> b,a (降序)

当 a=b 时,
a - b = b - a =0 , 排序结果 ===> 保持不变
var arr=['zhangsan','lisi','wangwu'];
// reverse() 在数组元素进行颠倒
arr.reverse();
console.log(arr); //[ 'wangwu', 'lisi', 'zhangsan' ]

// sort() 方法用于对数组的元素进行排序
arr.sort(); //英文字符串排序 按字母顺序(Ascall编码)对数组中的元素进行排序
console.log(arr);  //[ 'lisi', 'wangwu', 'zhangsan' ]

// 数组的数组进行排序
var numbers=[20,203,10,105,30,35,45,5];
numbers.sort(function (a,b) {
    return a-b; //升序
});
console.log(numbers);  //[5, 10,  20,  30,35, 45, 105, 203]
5 操作方法
  • concat连接数组

不改变原数组,返回被连接数组的一个副本,返回一个新数组

语法:array1.concat(array2,array3,...,arrayX)
  • slice截取元素
语法:array.slice(start, end)  //截取从start到end的元素不包括end位置的元素
  • splice 添加或删除元素(改变原数组)
语法:array.splice(index,howmany,item1,.....,itemX)
var arr=['zhangsan','lisi','wangwu'];
// concat() 用于连接两个或多个数组或数据进行拼接
var arr2=[1,2,3];
var arr3=['a','b','c'];
var newArr=arr.concat(arr2,arr3,222);
console.log(newArr);  //[ 'zhangsan', 'lisi', 'wangwu', 1, 2, 3, 'a', 'b', 'c', 222 ]

// slice() 截取一个数组或字符串 
var newArr1=arr.slice(0,2);  //0到2的元素,但不包含2的元素
var newArr2=arr.slice(-2);  //0到2的元素,但不包含2的元素
console.log(newArr,arr);    //[ 'zhangsan', 'lisi' ] [ 'lisi', 'wangwu' ]

// splice()添加元素
//从数组索引位置 1 开始,删除一个元素,添加两个新的元素"Lemon","Kiwi"
arr.splice(1,1,"Lemon","Kiwi");
console.log(arr);  // [ 'zhangsan', 'Lemon', 'Kiwi', 'wangwu' ]
//从数组索引位置 0 开始,删除数组后的两个元素:
arr.splice(0,2);
console.log(arr);   //[ 'wangwu' ]
6 位置方法
  • Array.prototype.indexOf 返回指定元素第一次出现的位置,如果没找到元素则返回-1
语法:array.indexOf(item,start)  //start代表从什么位置开始检索,范围为0至length-1,非必须
  • Array.prototype.lastIndexOf 返回指定元素最后一次出现的位置,如果没找到元素则返回-1
语法: array.lastIndexOf(item,start)
var arr2=['zhangsan','lisi','wangwu','terry','lisi','larry']
console.log(arr2.indexOf('lisi'));  //1
console.log(arr2.lastIndexOf('lisi'));  //4
7 迭代方法
  • Array.prototype.every检测数组所有元素是否都符合指定条件,返回布尔值

    注意:

    • 如果检测有一个元素不满足,则整个表达式返回 false ,且剩余的元素不再进行检测。如果所有元素都满足条件,则返回 true。
    • every不对空数组进行检测
语法:array.every(function(currentValue,index,arr), thisValue)
  • Array.prototype.some 检测数组中的元素是否有能满足指定条件,返回布尔值

  • Array.prototype.filter创建一个新数组,元素均满足指定条件,返回新数组

  • Array.prototype.map 返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。

  • Array.prototype.forEach 调用数组的每个元素,并将元素传递给回调函数

var ages = [32, 33, 19,22, 40];

//every()
// 参数的顺序:当前元素 索引 当前元素的数组
var bool=ages.every(function (age,index,arr) {
    // 是否ages里面的数据都大于18
    return age>=20
})
console.log(bool);  //false

//some()
var bool2=ages.some(function (age) {
    // 是否ages里面的数据是否有小于20
    return age<20
})
console.log(bool2);  //true

//filter()
var newArr=ages.filter(function (age) {
    return age>20
})
console.log(newArr);  //[ 32, 33, 22, 40 ]

//map()
var numbers = [4, 9, 16, 25];
var result = numbers.map(function (number) {
    return Math.sqrt(number)
})
console.log(result);//输出结果为:[ 2, 3, 4, 5 ]

//forEach()
ages.forEach(function (age,index) {
    console.log(index+'-'+age);
})
//输出结果
0-32
1-33
2-19
3-22
4-40
ap()
var numbers = [4, 9, 16, 25];
var result = numbers.map(function (number) {
    return Math.sqrt(number)
})
console.log(result);//输出结果为:[ 2, 3, 4, 5 ]

//forEach()
ages.forEach(function (age,index) {
    console.log(index+'-'+age);
})
//输出结果
0-32
1-33
2-19
3-22
4-40
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值