javascript(基础)数组常用的15个API

774 阅读4分钟

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

  • 它只会返回truefalse
  • 它会对数组中的每一项进行检测,千万不要在some里面进行if else操作
  • 不要在return后面写truefalsereturn后面跟的是你的条件
let arr = [
    { value: "1" },
    { value: "" },
    { value: "2" },
    { value: "3" },
    { value: "" },
]
let res = arr.some(item=>{
    return item.value !== ""
})
console.log(res);

在这里,只要有值,res就为true,所以我们可以在restrue时进行下一步操作。

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) // ["王五", "李四", "王五"]