1、forEach
用法: **foreach()**函数会将数组从头到尾遍历一遍,可以在回调函数中传三个参数,
- 参数1 是数组的每一条数据
- 参数2 是数组的索引
- 参数3 是数组自己本身 `
var data = [1,2,3,4,5];
//只传一个参数,item为数组元素
data.forEach(function (item){
console.log(item)
})
//传两个参数,item为数组元素,index为元素下标
data.forEach(function (item, index){
console.log(`${item}=========${index}`)
})
//传三个参数,item为数组元素,index为数组下标,arr为数组
data.forEach(function (item, index, arr){
console.log(`${item}=========${index}====${arr}`)
})
2、some()
测试数组中是不是至少有1个元素通过了被提供的函数测试。它返回的是一个Boolean类型的值。
简而言之就是:它对数组中的每一项进行校验,只要有一项通过了就是true。
- 它只会返回
true或false - 它会对数组中的每一项进行检测,千万不要在
some里面进行ifelse操作 - 不要在
return后面写true或false,return后面跟的是你的条件
let arr = [
{ value: "1" },
{ value: "" },
{ value: "2" },
{ value: "3" },
{ value: "" },
]
let res = arr.some(item=>{
return item.value !== ""
})
console.log(res);
在这里,只要有值,res就为true,所以我们可以在res为true时进行下一步操作。
if (res) {
console.log("数组有值");
} else {
console.log("至少输入一个值");
}
3、every()
every的使用方法和some一样。 在MDN中:every()方法测试一个数组内的所有元素是否都能通过某个指定函数的测试。它返回一个布尔值。
简而言之就是:它对数组中的每一项进行校验,只要有一项不通过它就是false。
注意事项与some一样。 如果要求每一个输入框中都必须有值时,
let arr2 = [
{ value: "1" },
{ value: "" },
{ value: "2" },
{ value: "3" },
{ value: "4" },
]
var res2 = arr2.every(item => {
return item.value !== ""
})
console.log(res2);
在这里,只要有一项没有值,res2就为false。
if (!res2) {
//res2为真,则走else;为假,则走if
console.log("输入框有空值");
} else {
console.log("输入框没空值");
console.log("进行下步操作");
}
4、find()
find()方法返回数组中满足提供的测试函数的第一个元素的值。否则返回 undefined
let arr3 = [
{ value: "" },
{ value: "" },
{ value: "" },
{ value: "" },
{ value: "apple" },
]
var res3 = arr3.find(item => {
return item.value !== ""
})
console.log(res3);
findindex
- 参数1 该数据项
- 参数2 索引
- 查找某条 符合条件的索引 找不到返回 -1
const arr = new Array({name: '张三'}, {name: '李四'}, {name: '王五'});
const findItem1 = arr.findIndex(item => item.name === '张三');
console.log(findItem1);
//输出:0
const findItem2 = arr.findIndex(item => item.name === '赵四');
console.log(findItem2);
//输出: -1
5、includes()
用法:函数用来判断是否包含指定的值,包含返回**true,不包含返回false**
例子:
let site = ['runoob', 'google', 'taobao'];
site.includes('runoob');
// true
site.includes('baidu');
// false
6、filter
filter为筛选。
用法:filter() 的参数是一个过滤条件,这个条件是回调函数 ,一个新数组
var arr = [1, 2, 3, 4]
arr=arr.filter(function (item) {
return item%2 //这里过滤掉了偶数,只留下奇数
})
console.log(arr)
arr = [1, 2]
用法二:获得以zhang开头的邮件
var users = [
{name: "张三", "email": "zhang@email.com"},
{name: "小王", "email": "wang@email.com"},
{name: "小红", "email": "hong@email.com"}
];
//定义一个新数组吧
// 把姓张的邮箱获取出来
var emailZhang = users.map(function (user) {
return user.email; })
// 筛选出zhang开头的邮件
emailZhang.filter(function(email) {
return /^zhang/.test(email);
});
console.log(emailZhang);
8、reduce()
函数可以理解为进去一堆,出来的是一个,参数接受的是一个回调函数
arr.reduce(function(prev,cur,index,arr){
...
}, init);
arr 表示将要操作的原数组;
prev 表示上一次调用回调时的返回值,或者初始值 init;
cur 表示当前正在处理的数组元素;
index 表示当前正在处理的数组元素的索引,若提供 init 值,则索引为0,否则索引为1;
init 表示初始值。
var arr = [1, 2, 3, 4, 5]
var sum = arr.reduce(function (prev, cur) {
return prev + cur;
},0);
//这里传入的初值为0,第一次计算0+1=1,的值作为下一轮的prev的值
1+2=3 继续作为下一轮的orev值
9.map
- 参数1 该数据项
- 参数2 索引
- 返回值是提取出一个自己想定义的新数组
const arr = new Array({name: '张三'}, {name: '李四'}, {name: '王五'});
const newArrMap = arr.map(item => item.name);
console.log(newArrMap)
// 输出 ['张三', '李四', '王五']
10.concat()
作用::合并数组
let arr1 = [1, 2, 3]
let arr2 = [4, 5, 6]
let arr = arr1.concat(arr2)
console.log(arr) // [1, 2, 3, 4, 5, 6]
11.push()
作用:在数组最后面添加元素
let arr = ['张三', '李四']
arr.push('王五')
console.log(arr) // ["张三", "李四", "王五"]
12.unshift()
作用:在数组头部添加元素
let arr = ['张三', '李四']
arr.unshift('王五')
console.log(arr) // ["王五", "张三", "李四"]
13.pop()
作用:删除数组中最后一个元素
let arr = ["张三", "李四", "王五"]
arr.pop('王五')
console.log(arr) // ["张三", "李四"]
14.shift()
作用:删除数组头部第一个元素
let arr = ["张三", "李四", "王五"]
arr.shift('王五')
console.log(arr) // ["李四", "王五"]
15.splice()
作用:动态删除添加元素
let arr = ["张三", "李四", "王五"]
arr.splice(0, 1, '王五')
console.log(arr) // ["王五", "李四", "王五"]