数组.方法名()
数组.push(数据, ...)
var arr = ['a', 'b', 'c', 'd']
var r = arr.push('e', 'f')
console.log('返回值r:', r) // 6
console.log('操作后的arr数组:', arr) // ['a', 'b', 'c', 'd', 'e', 'f']
数组.unshift(数据, ...)
var arr = ['a', 'b', 'c', 'd']
var r = arr.unshift('e', 'f')
console.log('返回值r:', r) // 6
console.log('操作后的arr数组:', arr) // ['e', 'f', 'a', 'b', 'c', 'd']
数组.pop()
var arr = ['a', 'b', 'c', 'd']
var r = arr.pop()
console.log('返回值r:', r) // 'd'
console.log('操作后的arr数组:', arr) // ['a', 'b', 'c']
数组.shift()
var arr = ['a', 'b', 'c', 'd']
var r = arr.shift()
console.log('返回值r:', r) // 'a'
console.log('操作后的arr数组:', arr) // ['b', 'c', 'd']
数组.reserve()
var arr = ['a', 'b', 'c', 'd']
var r = arr.reverse()
console.log('返回值r:', r) // ['d', 'c', 'b', 'a']
console.log('操作后的arr数组:', arr) // ['d', 'c', 'b', 'a']
console.log( r === arr ) // true
数组.sort()
数组.sort(函数)
var arr = [200, 4, 3, 11, 9, 6, 50, 8, 7]
var r = arr.sort() // 语法1
console.log('返回值r:', r) // [11, 200, 3, 4, 50, 6, 7, 8, 9]
console.log('操作后的arr数组:', arr) // [11, 200, 3, 4, 50, 6, 7, 8, 9]
var r = arr.sort(funtion (a, b) { return a - b }) // 语法2(升序)
console.log('返回值r:', r) // [3, 4, 6, 7, 8, 9, 11, 50, 200]
console.log('操作后的arr数组:', arr) // [3, 4, 6, 7, 8, 9, 11, 50, 200]
var r = arr.sort(funtion (a, b) { return b - a }) // 语法2(降序)
console.log('返回值r:', r) // [200, 50, 11, 9, 8, 7, 6, 4, 3]
console.log('操作后的arr数组:', arr) // [200, 50, 11, 9, 8, 7, 6, 4, 3]
数组.splice(起始索引, 删除个数)
-1
表示最后一个,-2
表示倒数第二个…数组.splice(起始索引, 删除个数, 数据, 数据...)
var arr = ['a', 'b', 'c', 'd', 'e', 'f']
// 语法1(从索引2开始删除3个数组数据)
var r = arr.splice(2, 3)
console.log('返回值r:', r) // ['c', 'd', 'e']
console.log('操作后的arr数组:', arr) // ['a', 'b', 'f']
// 语法2(从索引2开始删除1个数组数据,并将传入的数据('c', 'd', 'e')从索引2开始插入数组)
var r = arr.splice(2, 1, 'c', 'd', 'e')
console.log('返回值r:', r) // ['f']
console.log('操作后的arr数组:', arr) // ['a', 'b', 'c', 'd', 'e']
// 扩展:with方法
var arr1 = [10, 20, 30, 40]
console.log(arr1.splice(2, 1, 666)) // [30]
console.log(arr1) // [10, 20, 666, 40]
var arr2 = [10, 20, 30, 40]
console.log(arr2.with(2, 666)) // [10, 20, 666, 40]
console.log(arr2) // [10, 20, 30, 40]
// with方法不会改变原数组
注意:以上7个方法都会改变原数组
数组.concat(参数)
var arr = ['a', 'b', 'c']
var resArr = arr.concat(['d', 'e'], 1, 2, 3)
console.log('返回值resArr:', resArr) // ['a', 'b', 'c', 'd', 'e', 1, 2, 3]
var resArr = arr.concat()
console.log('返回值resArr:', resArr) // ['a', 'b', 'c']
console.log(arr === resArr) // false
数组.join(拼接字符)
,
拼接var arr = ['a', 'b', 'c']
var resStr = arr.join('-')
console.log('返回值resStr:', resStr) // 'a-b-c'
var resStr = arr.join('')
console.log('返回值resStr:', resStr) // 'abc'
var resStr = arr.join()
console.log('返回值resStr:', resStr) // 'a,b,c'
// 数组使用toString方法默认使用的起始就是数组自带的join方法
console.log([1, 2, 3].toString()) // '1,2,3'
arr.join = function() { return 666 }
console.log(arr.toString()) // 666
数组.includes(数据)
true
false
var arr = ['a', 'b', 'c', 'd', 'e', 'b', 'f', 'g']
var r = arr.includes('a')
console.log('返回值r:', r) // true
var r = arr.includes('ff')
console.log('返回值r:', r) // false
数组.indexOf(数据)
-1
-1
数组.indexOf(数据, 起始索引)
-1
-1
var arr = ['a', 'b', 'c', 'd', 'e', 'b', 'f', 'g']
// 语法1
console.log(arr.indexOf('b')) // 1
console.log(arr.indexOf('z')) // -1
// 语法2
console.log(arr.indexOf('b', 2)) // 5
console.log(arr.indexOf('b', 6)) // -1
数组.lastIndexOf(数据)
-1
-1
数组.lastIndexOf(数据, 起始索引)
-1
-1
var arr = ['a', 'b', 'c', 'd', 'e', 'b', 'f', 'g']
// 语法1
console.log(arr.lastIndexOf('b')) // 5
console.log(arr.lastIndexOf('z')) // -1
// 语法2
console.log(arr.lastIndexOf('b', 2)) // 1
console.log(arr.lastIndexOf('b', 0)) // -1
数组.slice(起始索引, 结束索引)
var arr = ['a', 'b', 'c', 'd', 'e']
var resArr = arr.slice(0, 2)
console.log('返回值resArr:', resArr) // ['a', 'b']
var resArr = arr.slice(2)
console.log('返回值resArr:', resArr) // ['c', 'd', 'e']
console.log('操作后的arr数组:', arr) // ['a', 'b', 'c', 'd', 'e']
// 原数组不会发生改变
数组.at(索引)
-1
表示最后一个,-2
表示倒数第二个…undefined
let arr = ['a', 'b', 'c'];
console.log(arr.at(0)); // 'a'
console.log(arr.at(-1)); // 'c'
let objArr = [
{ id: 1 },
{ id: 2 }
]
let item = objArr.at(-1);
console.log(item); // { id: 2 }
item.id = 999;
console.log(objArr); // [{ id: 1 }, { id: 999 }]
// 对象是复杂数据类型,因此当item的值改变时,objArr中对应的数据也会发生改变
reverse/sort/splice
方法的语法、作用以及参数都一样reverse/sort/splice
方法都会改变原数组toReversed/toSorted/toSpliced
方法不会改变原数组// toReversed
var arr1 = ['a', 'b', 'c', 'd', 'e'];
var r1 = arr1.toReversed();
console.log('方法的返回值:', r1); // ['e', 'd', 'c', 'b', 'a']
console.log('使用方法后arr:', arr1); // ['a', 'b', 'c', 'd', 'e']
// toSorted
var arr2 = [10, 5, 6, 20, 110, 2345];
var r2 = arr2.toSorted(function (a, b) { return a - b; });
console.log('方法的返回值:', r2); // [5, 6, 10, 20, 110, 2345]
console.log('使用方法后arr:', arr2); // [10, 5, 6, 20, 110, 2345]
// toSpliced
var arr3 = ['a', 'b', 'c', 'd', 'e'];
var r3 = arr3.toSpliced(2, 2, 666, 999);
// 注意: toSpliced的返回值为操作后的数组
console.log('方法的返回值:', r3); // ['a', 'b', 666, 999, 'e']
console.log('使用方法后arr:', arr3); // ['a', 'b', 'c', 'd', 'e']