如何遍历obj2找到与obj1的首个匹配项并返回obj1对应内容?
解决方案
要实现遍历obj2找到与obj1的首个匹配键,并返回obj1中对应键的对象,你可以利用Object.keys()结合Array.find()快速实现,找到第一个匹配项后就停止遍历,避免不必要的计算:
const obj1 = { item1: { name: '1' }, item2: { name: '2' } }; const obj2 = { item1: { sample: 'sample1' }, item2: { sample: 'sample2' } }; const getFirstMatch = (sourceObj, targetObj) => { // 获取targetObj的所有自有键,按插入顺序排列 const firstMatchingKey = Object.keys(targetObj).find(key => key in sourceObj); // 找到匹配键则返回对应的对象,否则返回null return firstMatchingKey ? { [firstMatchingKey]: sourceObj[firstMatchingKey] } : null; }; // 调用示例 const result = getFirstMatch(obj1, obj2); console.log(result); // 输出:{ item1: { name: '1' } }
关键说明
为什么不用
map?
你之前的代码用map会遍历所有键并返回包含所有匹配值的数组,而我们需要的是首个匹配项,find()会在找到第一个符合条件的元素后立即停止遍历,效率更高,也直接满足需求。关于键的存在性检查
- 用
key in sourceObj会检查对象原型链上的属性,如果只需要验证sourceObj的自有属性,可以替换为sourceObj.hasOwnProperty(key)。
- 用
返回结构
用对象字面量的动态属性语法{ [firstMatchingKey]: ... },确保返回的是和示例一致的键值对结构,而不是单独的属性值。
内容的提问来源于stack exchange,提问作者karvai
相关产品推荐
相关产品推荐

