js arary方法、应用场景汇总
数组的创建
- var arrayObj = new Array();
创建一个数组 - var arrayObj = new Array([size]);
const arr = Array(100)
创建一个数组并指定长度,注意不是上限,是长度 - var arr = [1,2,4] === var arr =new Array(1,2,4) === var arr = Array(1, 2, 4)
创建一个数组并赋值
实际上情况下数组都是变长的,也就是说即使指定了长度为5,仍然可以将元素存储在规定长度以外的
数组的元素的访问
- 获取数组的元素值
var testGetArrValue = arrayObj[1]; - 给数组元素赋予新的值
arrayObj[1]= “这是新值”;
数组元素的添加
- 将一个或多个新元素添加到数组结尾,并返回数组新长度
array. push(item) - 将一个或多个新元素添加到数组开始,数组中的元素自动后移,返回数组新长度
arrayObj.unshift(item); - 将一个或多个新元素插入数组指定位置, 并向数组添加新元素,深拷贝返回空数组。
arrayObj.splice(insertPosition, 0, item);
数组元素的删除 (调用方法后数组形式返回所移除的元素, 原数组移除元素)
- 移除最后一个元素并返回该元素值
arrayObj.pop(); - 移除最前一个元素并返回该元素值,数组中元素自动前移
arrayObj.shift(); - 删除从指定位置deletePos开始的指定数量deleteCount的元素arrayObj.splice(deletePos,deleteCount);
例子:
const arr1 = Array(22, 2, 4);
console.log(arr1.splice(0, 1), arr1); // [22] [2, 4]
数组的截取和合并
- 数组的形式返回数组的一部分, 深拷贝
arrayObj.slice(start, [end]); 不包括 end 对应的元素,如果省略 end 将复制 start 之后的所有元素 - 将多个数组(或字符串,或数组和字符串的混合)合并,并返回新数组
arrayObj.concat([item1[, item2[, . . . [,itemN]]]]); - 以value为分隔将字符串切割为对应部分,返回数组
String.split(“value”) - 用于把数组中的所有元素放入一个字符串,以value分隔的字符串
Array.join(“value”) - 指定的深度递归遍历数组,并将所有元素与遍历到的子数组中的元素合并为一个新数组返回。
arr.flat([depth])
例子:
const arr = [1, [2], [[22, 33]]];
const a = arr.flat(2);
console.log(a, arr); [1,2,22,33] [1, [2], [[22, 33]]];
注: flat() 方法会移除数组中的空项
数组的拷贝
- 返回数组的拷贝数组,注意是一个新的数组,不是指向(深拷贝)
arrayObj.slice(0);
arrayObj.concat(); - 数组元素的排序
反转元素(最前的排到最后、最后的排到最前),返回数组地址,浅拷贝
arrayObj.reverse();
对数组元素排序,返回数组地址, 浅拷贝
arrayObj.sort();
数组元素的字符串化
- 返回字符串,这个字符串将数组的每一个元素值连接在一起,中间用 separator 隔开。
arrayObj.join(separator); - 可以看作是join的特殊用法,不常用
toLocaleString 、toString 、valueOf
查询元素有没有在数组中
- includes 返回ture/false,
array1.includes(1)、 - indexOf返回元素位置/-1
array1.indexOf(0)
数组累加
- 对数组中的元素执行reducer函数(升序执行),将其结果汇总为单个返回值
arr.reduce(function(pre, cur, index, array))
例子:
const arr = [1, 2, 3];
const a = arr.reduce((pre, cur) => pre + cur, 2);
console.log(a, arr);
随机返回数组中数据
- 返回小于或等于其数字参数的最大整数
Math.floor() - 返回0到1之间的伪随机数
Math.random()
例子:
const arr = ['3070532', '3073185'];
console.log(arr[Math.floor((Math.random() * arr.length))]);
数组的3个属性(length、prototype、constructor)
- Length
length属性表示数组的长度,即其中元素的个数。因为数组的索引总是由0开始,所以一个数组的上下限分别是:0和length-1, js数组的length属性是可变的 - Prototype
使您有能力向对象添加属性和方法。返回对象类型原型的引用。prototype 属性是 object 共有的,用 prototype 属性提供对象的类的一组基本功能。 对象的新实例“继承”赋予该对象原型的操作。
例子:
function arrayMax() {
let max = 0;
for (let i = 0; i < this.length; i++) {
if (max < this[i]) {
max = this[i];
}
}
return max;
}
Array.prototype.max = arrayMax;
console.log([1, 2, 3, 44, 11, 2211, 555].max());
- constructor 属性
表示创建对象的函数,object.constructor // object是对象或函数的名称。
返回对创建此对象的数组函数的引用