一、改变原数组的数组方法
1.push()
- 语法:数组.push(数据)
- 作用:在数组的
末尾新增数据
- 返回值:新的长度
arr = [1, 2, 3, 4]
function push(arr,data) {
arr[arr.length] = data
return arr
}
console.log(push(arr,7))
console.log(arr);
2.pop()
- 语法:数组.pop()
- 作用:
删除数组末尾的数据
- 返回值:被删除的数据
arr = [1, 2, 3, 4]
function pop(arr) {
var num = arr[arr.length - 1]
arr.length -= 1
return num
}
console.log(pop(arr));
console.log(arr);
3.unshift()
- 语法:数组.unshift(数据)
- 作用:在数组的
开头新增数据
- 返回值:新数组的长度
arr = [1, 2, 3, 4]
function unshift(arr, data) {
var a = [data]
for (var i = 0; i < arr.length; i++) {
a[i + 1] = arr[i]
}
return {
arr: a,
len: a.length
}
}
console.log(unshift(arr, 7))
console.log(arr)
4.shift()
- 语法:数组.shift()
- 作用:
删除数组首位数据
- 返回值:被删除的数据
arr = [1,2,3,4]
console.log(arr);
function shift(arr) {
for (var i = 0; i < arr.length; i++) {
arr[i] = arr[i + 1]
}
arr.length -= 1
return arr
}
console.log(shift(arr));
5.sort()
- 语法:
- 1.数组.sort() 按照数据的首位排序
- 2.数组.sort(function (a,b) { return a - b }) 按照从小到大顺序排列
- 3.数组.sort(function (a,b) { return b - a }) 按照从达到小顺序排列
- 作用:将数组排序
- 返回值:排列好的新数组
arr = [1, 2, 5, 3, 11, 4]
arr.sort()
console.log(arr);
arr.sort(function (a, b) { return a - b })
console.log(arr);
arr.sort(function (a, b) { return b - a })
console.log(arr);
6.reverse()
- 语法:数组.reverse()
- 作用:将数组反转
- 返回值:反转后的数组
arr = [1, 2, 3, 4]
function reverse(arr) {
for (var i = 0; i < arr.length / 2; i++) {
var num = arr[i]
arr[i] = arr[arr.length - 1 - i]
arr[arr.length - 1 - i] = num
}
return arr
}
console.log(reverse(arr));
7.splice()
- 语法:数组.splice(要剪切的位置, 剪切几个, 增加的数据1,增加的数据2,……)
- 作用:
剪切数据
- 返回值:被剪切的数据以新数组的方式返回
var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]
for (var i = 0; i < arr.length; i++) {
arr.splice(i,1)
i--
}
console.log(arr);
二、不改变原数组的数组方法
1.indexOf()
- 语法:数组.indexOf(要查询的数据,从哪里开始查询)
- 作用:
查找数组中的数据
- 返回值:
- 如果有该数据,则返回
从左到右第一次出现的该数据的索引
- 如果没有,则返回 -1
arr = [1, 2, 3, 4, 5, 6, 1, 4, 2]
function indexOf(arr, data, index = 0) {
for (var i = index; i < arr.length - 1; i++) {
if (arr[i] === data) {
return i
}
}
return -1
}
var s1 = indexOf(arr, 7)
console.log(s1);
console.log(arr);
2.lastIndexOf()
- 语法:数组.lastIndexOf(要查询的数据,从哪里开始查询)
- 作用:
查找数组中的数据
- 返回值:
- 如果有该数据,则返回
从左到右第一次出现的该数据的索引
- 如果没有,则返回 -1
var arr2 = [11, 55, 66, 77, 100]
console.log('原数组:', arr2);
var res = arr2.lastIndexOf(100)
var res = arr2.lastIndexOf(110, 3)
console.log('新的数组:', arr2);
console.log('返回值:', res);
3.concat()
- 语法:数组.concat()
- 作用:将传入的数据,
合并到指定的数组中
- 返回值:合并后的新数组
var arr2 = [11, 55, 66, 77, 100]
console.log('原数组:', arr2);
var res = arr2.concat(15, 16, 17, [10, 150])
console.log('新的数组:', arr2);
console.log('返回值:', res);
4.join()
- 语法:数组.join('连接符')
- 作用:将数据
用连接符连接起来
- 返回值:以连接符链接的完整字符串
var arr = [1, 2, 3, 4]
var res = arr.join('&')
console.log('新的数组:', arr);
console.log('返回值:', res);
5.slice()
- 语法:数组.slice(开始下标,结束下标)
- 作用:
复制数据
- 返回值:复制的数据
注意:包前不包后
var arr1 = [3, 1, 5, 7, 2, 8, 4, 11, 55]
var res = arr1.slice(3, 6)
var res = arr1.slice()
var res = arr1.slice(3, -1)
console.log('新的数组:', arr1);
console.log('返回值:', res);
6.forEach()
- 语法:数组.forEach(function (item, index, origin) {遍历数组后要执行的代码})
- item:数组的每一项
- index:元素对应的索引/下标
- origin:原来的数组
- 作用:
遍历数组,拿到数组的每一项
- 返回值:无
- 语义:遍历数组
var arr = [11, 55, 66, 77, 100]
arr.forEach(function (item, index, origin) {
console.log(item, index)
})
7.map()
- 语法:数组.map(function (item, index, origin) {遍历数组后要执行的代码})
- 作用:根据原数组
映射一个新的数组
- 返回值:映射出来的新数组(需要在函数内部书写 return)
- 语义:映射数组
var arr = [11, 55, 66, 77, 100]
var res = arr2.map(function (item, index, origin) {
return item + '1'
})
console.log(res);
8.filter()
- 语法:数组.filter(function (item, index, origin) { })
- 作用:
过滤符合要求的数据
- 返回值:被过滤掉的符合要求的数据以数组形式返回
var arr = [11, 55, 66, 77, 100, 111]
var res = arr.filter(function (item) {
return item % 11 === 0
})
console.log(arr);
console.log(res);
9.find()
- 语法:数组.find(function (item, index, origin) { })
- 作用:
查找数组中的数据
- 返回值:满足条件的
第一个数据, 如果找不到则返回undefined
var arr = [11, 55, 66, 77, 100, 111]
var res = arr.find(function (item) {
return item % 11 === 0
})
console.log(arr);
console.log(res);
10.findIndex()
- 语法:数组.findIndex(function (item, index, origin) { })
- 作用:
查找数组中数据对应的索引
- 返回值:满足条件的
第一个数据对应的索引, 如果找不到则返回undefined
var arr = [11, 55, 66, 77, 100, 111]
var res = arr.findIndex(function (item) {
return item % 11 === 0
})
console.log(arr);
console.log(res);
11.every()
- 语法:数组.every(function (item, index, origin) { })
- 作用:判断数组中是否
全部满足条件
- 返回值:是,返回true,不是,返回false
var arr = [11, 55, 66, 77, 100, 111]
var res = arr.every(function (item) {
return item > 0
return item % 11 === 0
})
console.log(arr);
console.log(res);
12.some()
- 语法:数组.some(function (item, index, origin) { })
- 作用:判断数组中是否
有满足条件
- 返回值:是,返回true,不是,返回false
var arr = [11, 55, 66, 77, 100, 111]
var res = arr.some(function (item) {
return item < 0
return item % 11 === 0
})
console.log(arr);
console.log(res);
13.reduce()
- 语法:数组.reduce(function (prev, item, index, origin) { }, init)
- 参数1:function (prev, item, index, origin) { }
- 1.item, index, origin
- 2.prev:
- 如果是第一次执行那么可能是 数组[0] 的值, 也有可能是 init 的值
- 如果是第一次后续的执行, 那么他的值就是上一次遍历返回的结果
- 参数2:init 随意传递一个值即可, 只要符合需求
- 作用:累加器
- 返回值:累加后的结果
var arr = [1, 2, 3, 4, 5]
var res = arr.reduce(function (prev, item) {
return prev + item
}, "")
console.log(res)