Array

Array对象构造函数静态方法Array.isArray()(判断参数是否为数组)实例方法find()和findIndex()(返回数组满足函数的一个元素,索引)valueOf()和toString()(对象值和转字符串)push() 和pop()(从后面添加和删除)shift()和unShift()(从头删除和添加)join()(数组转字符串,指定分隔符)concat()(数组合并)reverse()(数组反序)slice() (截取数组,原数组不变)splice()(截取数组,修改原数组)sort()(
摘要由CSDN通过智能技术生成

构造函数

Array是JS的一个原生对象,同时也是一个构造函数。可以通过new操作符进行变量声明

var arr = new Array(2);
arr.length // 2
arr // [ empty x 2 ]

作为构造函数,如果参数为一个整数,则返回一个数组,数组元素的各位为参数。

var arr = new Array(2);
// 等同于
var arr = Array(2);

如上,两种结果是一样的。从语义化触发,还是建议使用new进行声明。

但是,Array()构造函数有一个很大的缺陷,不同的参数会导致行为不一致。

// 无参数时,返回一个空数组
new Array() // []

// 单个正整数参数,表示返回的新数组的长度
new Array(1) // [ empty ]
new Array(2) // [ empty x 2 ]

// 非正整数的数值作为参数,会报错
new Array(3.2) // RangeError: Invalid array length
new Array(-3) // RangeError: Invalid array length

// 单个非数值(比如字符串、布尔值、对象等)作为参数,
// 则该参数是返回的新数组的成员
new Array('abc') // ['abc']
new Array([1]) // [Array[1]]

// 多参数时,所有参数都是返回的新数组的成员
new Array(1, 2) // [1, 2]
new Array('a', 'b', 'c') // ['a', 'b', 'c']

如上可以看出,Array()作文构造函数,行为很不一致,所以还是比较推荐使用字面量的形式声明,如下

// bad
var arr = new Array(1, 2);

// good
var arr = [1, 2];

注意,如果参数是一个正整数,返回数组的成员都是空位。虽然读取的时候返回undefined,但实际上该位置没有任何值。虽然这时可以读取到length属性,但是取不到键名

静态方法

Array.isArray()(判断参数是否为数组)

Array.isArray()返回值为Boolean型,用于判断参数是否为数组,弥补typeof判断数组结果为object的不足。

const a = [1,2,3,4,5];
console.log(typeof a); //object
console.log(Array.isArray(a)); //true

实例方法

keys()、values()、entries()

和Object的Object.keys()、Object.values()、Object.entries()一致,因为Array本身就是Objec的一个实例,可以说Array的三个方法是级车和关于Object。

  • keys():返回数组所有键值构成的数组
  • values():返回数组元素构成的数组
  • entries()返回一个新的Array Iterator对象,该对象包含数组中每个索引的键/值对。

find()和findIndex()(返回数组满足函数的第一个元素,索引)

find()和findIndex()的参数都是函数,函数的结果为我们匹配的条件,我们可以配合箭头函数表示。

find方法对数组中的每一项元素执行一次 callback 函数,直至有一个 callback 返回 true。当找到了这样一个元素后,该方法会立即返回这个元素的值,否则返回 undefined。

注意 callback 函数会为数组中的每个索引调用即从 0 到 length - 1,而不仅仅是那些被赋值的索引,这意味着对于稀疏数组来说,该方法的效率要低于那些只遍历有值的索引的方法。

如果提供了 thisArg参数,那么它将作为每次 callback函数执行时的this ,如果未提供,则使用 undefined。

const arr = [1,23,4,5,23,3,5,2];
const j = arr.find(item=>item>10);
console.log(j); //23
const i = arr.findIndex(item=>item>10);
console.log(i); //1

如上,j取了arr中第一个元素23,i表示满足函数条件的第一个元素的索引。

function callback(element,index,arr){
   }
arr.find(callback, thisArg)

如上,函数包括四个参数:

  • element:当前遍历的元素,必选。
  • index:当前遍历元素索引,可选。
  • arr:当前正在遍历的数组,可选。

includes()(数组是否包含参数元素)

includes() 方法用来判断一个数组是否包含一个指定的值,根据情况,如果包含则返回 true,否则返回false。

const array1 = [1, 2, 3];
console.log(array1.includes(2));
// expected output: true
const pets = ['cat', 'dog', 'bat'];
console.log(pets.includes('cat'));
// expected output: true
console.log(pets.includes('at'));
// expected output: false
Arr.includes(valueToFind,fromIndex )

两个参数:
valueToFind:表示要判断的数组元素,
fromIndex :表示查找的起始位置,如果为负值,则按升序从 array.length + fromIndex 的索引开始搜 (即使从末尾开始往前跳 fromIndex 的绝对值个索引,然后往后搜寻)。默认为 0。

valueOf()和toString()(对象值和转字符串)

valueOf方法是一个所有对象都拥有的方法,表示对该对象求值。不同对象的valueOf方法不尽一致,数组的valueOf方法返回数组本身。

var arr = [1, 2, 3];
arr.valueOf() // [1, 2, 3]

toString方法也是对象的通用方法,数组的toString方法返回数组的字符串形式。

var arr = [1, 2, 3];
arr.toString() // "1,2,3"

var arr = [1, 2, 3, [4, 5, 6]];
arr.toString() // "1,2,3,4,5,6"

push() 和pop()(从后面添加和删除)

push方法用于在数组的末端添加一个或多个元素,并返回添加新元素后的数组长度。注意,该方法会改变原数组。

var arr = [];

arr.push(1) // 1
arr.push('a') // 2
arr.push(true, {
   }) // 4
arr // [1, 'a', true, {}]

上面代码使用push方法,往数组中添加了四个成员。

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

var arr = ['a', 'b', 'c'];

arr.pop() // 'c'
arr // ['a', 'b']

对空数组使用pop方法,不会报错,而是返回undefined。

[].pop() // undefined

push和pop结合使用,就构成了“后进先出”的栈结构(stack)。

var arr = [];
arr
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值