findIndex() && find()

本文通过实例演示了JavaScript中数组方法find和findIndex的使用技巧,详细解析了如何利用这两种方法在数组中查找特定元素及其索引,适用于前端开发场景。

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

stu.find((element) => (element.name == '李四'));返回的是{name: "李四", gender: "男", age: 20}这个元素
stu.findIndex((element)=>(element.name =='李四'));返回的是索引下标:2
var arr = [
    {"provCode":null,"count":"16","rgnname":"宁夏"},
    {"provCode":null,"count":"158","rgnname":"山东"},
    {"provCode":null,"count":"8","rgnname":"北京"},
    {"provCode":null,"count":"13","rgnname":"天津"},
    {"provCode":null,"count":"114","rgnname":"河北"},
    {"provCode":null,"count":"66","rgnname":"辽宁"},
    {"provCode":null,"count":"3","rgnname":"西藏"},
    {"provCode":null,"count":"123","rgnname":"河南"},
    {"provCode":null,"count":"56","rgnname":"浙江"},
    {"provCode":null,"count":"126","rgnname":"广西"},            
    {"provCode":null,"count":"273","rgnname":"广东"},                
    {"provCode":null,"count":"115","rgnname":"云南"},
    {"provCode":null,"count":"23","rgnname":"海南"},
    {"provCode":null,"count":"1","rgnname":"四川"}, 
    {"provCode":null,"count":"1094","rgnname":"count"}
]

 //寻找值   存在问题
    for (let i = 0; i < arr.length; i++) {
        console.log(provinceName);                    
        if(provinceName === arr[i].rgnname){                 
            var count = Number(arr[i].count);
            console.log(count,"count");

            var ct = format(count);        //格式转化   
            $("#saleSt span:eq(0)").html(ct);                          
        }
        // else if (provinceName !== arr[i].rgnname) {
        //     // $("#saleSt span:eq(0)").html("0");  
        //     return alert("AAA")  
       // }
    } 

    // 查值               
    function getIndex(params) {
        return params.rgnname == provinceName
    }             
    // arr.find(getIndex)

    var  e = arr.findIndex(getIndex);//返回-1  provinceName不在arr中
    // alert(e)
    if (e !== -1) {
        var count = Number(arr[e].count);
        console.log(count,"count");    
        var ct = format(count);        //格式转化   
        $("#saleSt span:eq(0)").html(ct);    
    }else{
        $("#saleSt span:eq(0)").html("0"); 
    }  

https://blog.youkuaiyun.com/menghuannvxia/article/details/79640028

 

        var arr = [-8,1,2,3,4,5,6,7,8,9];
		var ce = arr.find((n) => n < 0);
		// alert(ce)
        
		var AAA = arr.find(function(value,index,arr){			
			return value == -8;		 // -8	
		})
		var BBB = arr.findIndex(function(value,index,arr){			
			return value == -8;		// 0	
		})
		console.log(AAA,BBB)


		function f(v){
		  return v > this.age;
		}
		let person = {name: 'John', age: 20};

		var CCC = [10, 12, 26, 15].find(f, person);    // 26
		var DDD = [10, 12, 26, 15].findIndex(f, person);    // 2
		console.log(CCC, DDD)

 

### `findIndex` 方法的作用 在 Vue.js 或 JavaScript 中,`findIndex` 方法用于查找数组中**第一个满足条件的元素的索引**。如果找到符合条件的元素,返回该元素的索引值;如果没有找到符合条件的元素,则返回 `-1`。该方法适用于需要获取特定元素在数组中位置的场景,尤其在需要根据索引进行后续操作(如更新或删除)时非常有用。 ### 使用方式 `findIndex` 的使用方式与 `find` 类似,不同之处在于 `findIndex` 返回的是索引而不是元素本身。其语法如下: ```javascript array.findIndex(callback(element[, index[, array]])[, thisArg]) ``` 其中,`callback` 是一个用于测试每个元素的函数,只有当该函数返回 `true` 时,才会返回当前元素的索引。`thisArg` 是可选的,用于执行 `callback` 时的 `this` 值。 ### 使用示例 假设有一个用户数组,想要查找某个用户的索引: ```javascript const users = [ { id: 1, name: &#39;Alice&#39; }, { id: 2, name: &#39;Bob&#39; }, { id: 3, name: &#39;Charlie&#39; } ]; const index = users.findIndex(user => user.id === 2); console.log(index); // 输出: 1 ``` 在这个示例中,`findIndex` 用于查找 `id` 为 `2` 的用户在数组中的索引位置。由于数组索引从 `0` 开始,因此返回值为 `1`。 ### 在 Vue 中的应用 在 Vue.js 中,`findIndex` 常用于响应式数据的更新。由于 Vue 无法检测到数组索引的直接修改,因此在需要更新数组中的某个元素时,通常会先使用 `findIndex` 获取索引,然后通过 `Vue.set` 或数组的变异方法进行更新。 例如: ```javascript export default { data() { return { users: [ { id: 1, name: &#39;Alice&#39; }, { id: 2, name: &#39;Bob&#39; }, { id: 3, name: &#39;Charlie&#39; } ] }; }, methods: { updateUser() { const index = this.users.findIndex(user => user.id === 2); if (index !== -1) { this.$set(this.users, index, { ...this.users[index], name: &#39;Updated Name&#39; }); } } } }; ``` 在这个示例中,`findIndex` 被用来查找需要更新的用户对象的索引,并通过 `this.$set` 方法确保 Vue 能够检测到数据的变化并更新视图。 ### 总结 `findIndex` 方法在 Vue.js 和 JavaScript 中主要用于查找满足条件的元素在数组中的索引位置,适用于需要基于索引进行操作的场景,如更新或删除数组元素。它与 `find` 的区别在于返回值类型不同:`find` 返回元素值,而 `findIndex` 返回索引值[^1]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值