js查找某个值在数组里面的索引,某个对象 (该对象存在唯一索引) 在数组里面的索引

JavaScript与ES6数组操作
这篇博客探讨了如何使用JavaScript的findIndex方法和splice方法来处理数组中的元素。示例展示了在存在唯一索引的对象数组和数值类数组中查找并删除特定元素的过程,对比了传统语法和ES6箭头函数的写法,强调了ES6语法的简洁性。

js正常语法

//存在唯一索引的对象数组,-1表示不存在
let i = checkedGoodsAttributes.findIndex(function(item){return item.goods_attribute_uuid == checkedAttr.goods_attribute_uuid})
if (i != -1){
	checkedGoodsAttributes.splice(i,1)
}
// 数值类数组
let j = checkedCartUuids.indexOf(uuid);
if (j != -1){
	checkedCartUuids.splice(j, 1)
}

ES6箭头语法

let i = checkedGoodsAttributes.findIndex(item=>item.goods_attribute_uuid == checkedAttr.goods_attribute_uuid)
if (i != -1){
	checkedGoodsAttributes.splice(i,1)
}
let j = checkedCartUuids.indexOf(uuid);
if (j != -1){
	checkedCartUuids.splice(j, 1)
}

JavaScript 中,如果想查找数组中特定对象索引,可以使用 `Array.prototype.findIndex()` 方法。此方法允许通过一个回调函数来测试数组中的每个元素,并返回第一个满足条件的元素的索引。若没有找到符合条件的元素,则返回 `-1`。 例如,考虑一个包含多个对象数组,每个对象代表一个类别,并且具有 `id` 和 `name` 属性: ```javascript const categories = [ { id: 1, name: 'Electronics' }, { id: 2, name: 'Laptops' }, { id: 3, name: 'Phones' } ]; ``` 要找到 `id` 为 `2` 的对象索引,可以使用如下代码: ```javascript const index = categories.findIndex(category => category.id === 2); console.log(index); // 输出:1 ``` 在这个例子中,`findIndex()` 接收一个箭头函数作为参数,该函数检查每个 `category` 对象的 `id` 是否等于 `2`。一旦找到匹配项,就返回其索引[^1]。 对于更复杂的结构,如嵌套的对象数组,可以通过递归的方式来实现查找。例如,当每个类别还可能包含子类别时,可以编写一个递归函数来遍历所有层级的类别并查找特定的 `id`: ```javascript function findCategoryIndex(categories, id) { for (let i = 0; i < categories.length; i++) { const category = categories[i]; if (category.id === id) return i; if (category.subcategories) { const subIndex = findCategoryIndex(category.subcategories, id); if (subIndex !== -1) return i; } } return -1; } ``` 这个函数首先检查当前层级的每个类别是否匹配给定的 `id`。如果当前类别有 `subcategories` 属性,则递归调用 `findCategoryIndex()` 来搜索子类别。一旦在任何层级找到匹配项,就返回其索引。如果没有找到,最终会返回 `-1` [^2]。 需要注意的是,由于对象是引用类型,在比较对象时直接使用 `===` 可能不会得到预期的结果,除非两个对象实际上是同一个实例。因此,在查找对象时通常依据其属性来进行比较。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hmk1900

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值