理清方法findIndex(),find(), 与filter()等

本文介绍了ES6中Array的find()、findIndex()和filter()方法。find()用于查找并返回目标元素,若未找到则返回undefined;findIndex()返回目标元素的索引,找不到则返回-1。两者都使用回调函数作为查找条件。filter()方法则用于创建一个新的数组,包含所有通过测试条件的元素,例如去除空值、null、undefined或特定值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(1)ES6为Array增加了find(),findIndex函数。

find()函数用来查找目标元素,找到就返回该元素,找不到返回undefined。

findIndex()函数也是查找目标元素,找到就返回元素的位置(索引)找不到就返回-1

他们的都是一个查找回调函数(匿名函数)。

find( )实例方法:

所谓的实例方法就是并不是以Array对象开始的,而是必须有一个已经存在的数组,然后使用的方法,这就是实例方法

let arr=[1,2,3,4,5,6,7,8,9];
console.log(arr.find(function(value,index,arr){
    return value > 5;
})) 

value:表示当前查找的值。
index:表示当前查找的数组索引。
arr:表示当前数组。

// 6

 findIndex()方法

    返回传入一个测试条件(函数)符合条件的数组第一个元素位置

获取数组中年龄大于等于 18 的第一个元素索引位置

var ages = [3, 10, 18, 20];
 
function checkAdult(age) {
    return age >= 18;
}
 
function myFunction() {
    document.getElementById("demo").innerHTML = ages.findIndex(checkAdult);
}
fruits 输出结果:

2
state.productList.forEach((ele, index) => {
          const selectIndex = state.productList.findIndex(element => element.pageData === productCon.page)
          if (selectIndex !== -1) {
            // state.productList[selectIndex].selectData = []
            state.productList[selectIndex].selectData = productCon.data
          } else {
            const selectData = {
              pageData: productCon.page,
              selectData: productCon.data
            }
            state.productList.push(selectData)
          }
        })

(2)filter()

1.判断数组中是否存在某个值

var arr = [
  { name:'xdd',  age:50},
  { name: 'xm', age: 12  }
]
var newArr = arr.filter(item => item.name=='xdd' )
// newArr :  [{name:'xdd',  age:50}]

(2)去除 ‘’ ,undefined,null, 0

var arr = ['1',2,undefined, 'xdd',undefined,'0', 0, null, []]
var newArr = arr.filter(item => item)
// newArr : ['1','2','xdd', '0', []]

(3)去掉数组中不符合项

var arr = [1, 2, 3, 4, 5,4, 6]
var newArr = arr.filter(item => item>4) 
// newArr : [5, 6]

(4)数组去重

var arr = [1, 2, 6, 3, 4, 5,4, 6,4,5,6,1,5,5,6,2]
var newArr = arr.filter((x, index, self)=>{
	// x : 数组每一项的值
	// index: 每一项的下标
	// self: 当前数组
  return self.indexOf(x)===index
})
// newArr: [1,2,6,3,4,5]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值