Node.js如何查找满足双条件的数组索引:属性存在且指定值匹配
问题错误原因
你的代码无法正常运行的核心问题是条件判断中错误嵌套了第二个箭头函数:&& 右侧的 ({key2}) => key2 是一个未执行的函数对象,布尔判断中函数对象永远为真,完全没有实现「检查key2属性是否存在」的逻辑,最终会错误返回第一个key为value1的元素索引0。
正确实现方案
代码示例
写法1(兼容性强,避免假值误判)
const x = examples.findIndex(item => item.key === 'value1' && 'key2' in item)
如果仅需要检查元素自身属性(排除原型链继承的属性),可以把第二个条件替换为item.hasOwnProperty('key2')。
写法2(解构写法)
const x = examples.findIndex(({ key, key2 }) => key === 'value1' && key2 !== undefined)
如果你的业务场景中key2不会出现undefined、''、0等假值,也可以简化为&& key2。
验证结果
代入你给出的示例数组测试,上述代码返回结果为1,完全符合需求。
内容的提问来源于stack exchange,提问作者Sigsby
相关产品推荐
相关产品推荐

