如何在含对象的数组中查找元素?附对象创建代码
检查对象是否存在于数组中的解决方案
先看你的makeEventObject函数,其实可以简化一下(当然不影响核心功能),不过先回到你的核心需求——检查某个元素(或者说符合特定条件的对象)是否存在于数组中。
假设你已经用这个函数创建了一批对象并组成了数组,比如:
// 创建几个事件对象 const event1 = makeEventObject("click", "btn1", "primary-btn"); const event2 = makeEventObject("hover", "menu", "nav-menu"); const event3 = makeEventObject("submit", "form", "login-form"); // 组成对象数组 const eventsArray = [event1, event2, event3];
下面分两种常见场景给你解决方案:
1. 检查同一引用的对象是否在数组中
因为对象是引用类型,直接用includes()方法就能判断目标对象是不是数组里的同一个引用:
// 检查event1是否在数组中,会返回true console.log(eventsArray.includes(event1)); // 但如果新建一个属性完全相同的对象,因为引用不同,includes会返回false const newEvent = makeEventObject("click", "btn1", "primary-btn"); console.log(eventsArray.includes(newEvent)); // false
2. 检查数组中是否存在具有特定属性值的对象
这是更常用的场景——比如你想找有没有idzName为btn1的对象,可以用some()方法快速判断存在性:
// 检查是否有idzName为"btn1"的对象 const hasBtn1 = eventsArray.some(event => event.idzName === "btn1"); console.log(hasBtn1); // true // 也可以同时匹配多个属性,比如找eventName为hover且classzName为nav-menu的对象 const hasHoverNav = eventsArray.some(event => event.eventName === "hover" && event.classzName === "nav-menu" ); console.log(hasHoverNav); // true
如果需要找到具体的对象而不只是判断存在,就用find()方法:
const targetEvent = eventsArray.find(event => event.idzName === "form"); console.log(targetEvent); // 返回eventName为"submit"的那个对象
最后给你提个小优化:你的makeEventObject函数可以简化,不需要嵌套构造函数,这样写更简洁易读,功能完全一致:
function makeEventObject(eventName, idzName, classzName) { return { eventName, idzName, classzName }; }
内容的提问来源于stack exchange,提问作者user8873301
相关产品推荐
相关产品推荐

