数组检测
//通常情况
let boo = nums instanceof Array
console.log(boo); //true
//最终方法 Array.isArray()方法
let boo = Array.isArray(nums)
console.log(boo);
数组转换
toString()
toLocalString()
join()
参数可指定分隔符
var arr = ['ga', 'er', 'rt']
let a = arr.toLocaleString()
console.log(a); //ga,er,rt
console.log(arr); //[ 'ga', 'er', 'rt' ]
var arr = ['ga', 'er', 'rt']
let a = arr.join('|')
console.log(a); //ga|er|rt
console.log(arr); //[ 'ga', 'er', 'rt' ]
添加,移除方法
push()方法可以接收任意数量的参数,并把他们逐个添加到数组末尾,并返回修改后数组的长度
pop()方法则从数组末尾移除最后一项,减少数组的length值,然后返回移除的项
shift()移除数据组中的第一个项并返回该项,同时将数组长度减一
unshift() 在数组前端添加任意个项并返回新数组的长度
重排序方法
- reverse()方法可以反转数组项的顺序,注意该方法是直接在原始数组上进行操作的。
var nums = [1, 2, 3, 4]
nums.reverse()
console.log(nums); //[ 4, 3, 2, 1 ]
- sort()方法,在默认情况下会按升序序列排列数组项——即最小的值位于最前面,最大的值排在最后面。不过这个升序的比较,比较的不是数值的大小,为了实现排序,sort()方法会调用每个数组项的toString()转型方法,然后比较得到的字符串,以确定该如何排序。即使数组中的每一项都是数值,sort()方法比较的也是字符串。
var nums = [0,1,5,10,15]
nums.sort()
console.log(nums); // [ 0, 1, 10, 15, 5 ]
//参数为比较函数
var nums = [0,1,5,10,15]
nums.sort(compare)
console.log(nums); // [ 0, 1, 5, 10, 15 ]
function compare(a, b) {
return a -b
}
参考资料https://www.w3school.com.cn/jsref/jsref_sort.asp
操作方法
- concat(...value) 方法用于连接两个或多个数组。
该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。
//参数:可以是具体的值,也可以是数组对象。可以是任意多个
//返回值:返回一个新的数组。该数组是通过把所有 arrayX 参数添加到 arrayObject 中生成的。如果要进行 concat() 操作的参数是数组,那么添加的是数组中的元素,而不是数组
var nums = [0]
let a = nums.concat(1, 2)
console.log(a); //[ 0, 1, 2 ]
var nums = [0]
var num1 = [1, 2]
var num2 = [3, 4]
let a = nums.concat(num1, num2)
console.log(a); //[ 0, 1, 2, 3, 4 ]
- slice() 方法可从已有的数组中返回选定的元素。
slice()方法可提取字符串的某个部分,并以新的字符串返回被提取的部分。
注意: slice() 方法不会改变原始数组。
参数:
start:必需。规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推。
end:可选。规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。如果这个参数是负数,那么它规定的是从数组尾部开始算起的元素。
返回值:返回一个新的数组,包含从 start 到 end (不包括该元素)的 arrayObject 中的元素。
var nums = [0, 1, 2, 3]
let a = nums.slice(1, 3)
console.log(a); //[ 1, 2 ]
- splice() 方法用于插入、删除或替换数组的元素。
注意:这种方法会改变原始数组!。
array.splice(index,howmany,item1,.....,itemX)
参数:
index 必需。规定从何处添加/删除元素。该参数是开始插入和(或)删除的数组元素的下标,必须是数字。
howmany 必需。规定应该删除多少元素。必须是数字,但可以是 "0"。如果未规定此参数,则删除从 index 开始到原数组结尾的所有元素。
item1, ..., itemX 可选。要添加到数组的新元素
返回值:type(Array) 如果从 arrayObject 中删除了元素,则返回的是含有被删除的元素的数组。
//插入
var arr = [1, 2, 3]
let a = arr.splice(1, 0, 4, 5)
console.log(a); //[]
console.log(arr); //[ 1, 4, 5, 2, 3 ]
//删除
var arr = [1, 2, 3, 4, 5]
let a = arr.splice(1, 2)
console.log(a) //[]
console.log(arr); //[ 1, 4, 5 ]
//替换
var arr = [1, 2, 3]
let a = arr.splice(1, 1, 4, 5)
console.log(a); //[2]
console.log(arr); //[ 1, 4, 5, 3 ] 4,5替换了2
位置方法
- indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。
array.indexOf(item,start)
参数:
item 必须。查找的元素。
start 可选的整数参数。规定在字符串中开始检索的位置。它的合法取值是 0 到 stringObject.length - 1。如省略该参数,则将 从字符串的首字符开始检索。
返回值:Number
元素在数组中的位置,如果没与搜索到则返回 -1
var arr = [1, 2, 3, 4]
let i = arr.indexOf(2, 0)
console.log(i); //1
- lastIndexOf() 方法可返回一个指定的字符串值最后出现的位置,在一个字符串中的指定位置从后向前搜索。
var arr = [1, 2, 3, 4, 2, 6]
let i = arr.lastIndexOf(2)
console.log(i); //4 最后一次出现是索引为4时
迭代方法
- every()
array.every(function(currentValue,index,arr), thisValue)
every() 方法用于检测数组所有元素是否都符合指定条件(通过函数提供)。
every() 方法使用指定函数检测数组中的所有元素:
如果数组中检测到有一个元素不满足,则整个表达式返回 false ,且剩余的元素不会再进行检测。
如果所有元素都满足条件,则返回 true。
注意: every() 不会对空数组进行检测。
注意: every() 不会改变原始数组。
var arr = [1, 2, 3, 4, 2, 6]
let i = arr.every(function (item, index, arr) {
return item < 7
})
console.log(i); //true
- some()
some() 方法用于检测数组中的元素是否满足指定条件(函数提供)。
some() 方法会依次执行数组的每个元素:
如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测。
如果没有满足条件的元素,则返回false。
注意: some() 不会对空数组进行检测。
注意: some() 不会改变原始数组。
var arr = [1, 2, 3, 4, 2, 6]
let i = arr.some(function (item, index, arr) {
return item < 7
})
console.log(i); //true 数组中有小于7的数
- filter()
filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。
注意: filter() 不会对空数组进行检测。
注意: filter() 不会改变原始数组。
var arr = [1, 2, 3, 4, 2, 6]
let i = arr.filter(function (item, index, arr) {
return item < 3
})
console.log(i); //[ 1, 2, 2 ]
console.log(arr); //[ 1, 2, 3, 4, 2, 6 ]
- map()
map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。
map() 方法按照原始数组元素顺序依次处理元素。
注意: map() 不会对空数组进行检测。
注意: map() 不会改变原始数组。
var arr = [1, 2, 3, 4, 2, 6]
let i = arr.map(function (item, index, arr) {
return item * 3
})
console.log(i); //[ 3, 6, 9, 12, 6, 18 ]
console.log(arr); //[ 1, 2, 3, 4, 2, 6 ]
- forEach()
forEach() 方法用于调用数组的每个元素,并将元素传递给回调函数。
注意: forEach() 对于空数组是不会执行回调函数的。
var arr = [1, 2, 3, 4, 2, 6]
arr.forEach(function () {
// 具体操作
})
//和for循环类似
fill()
fill() 方法用一个固定值填充一个数组中从起始索引到终止索引内的全部元素。不包括终止索引。
fill 方法接受三个参数 value,start 以及 end,start 和 end 参数是可选的,其默认值分别为 0 和 this 对象的 length 属性值。
var arr = [1, 2, 3, 4, 5]
let a = arr.fill(4, 2, 3) //用4替换索引2-3的元素
console.log(a); //[ 1, 2, 4, 4, 5 ]
console.log(arr); //[ 1, 2, 4, 4, 5 ]