如何从JavaScript对象中根据key获取值,不存在时返回not found
问题分析
- 现有代码的核心缺陷是缺少key不存在时的兜底逻辑,仅当匹配到对象中存在的key时才会向结果数组插入值,且内层for in遍历对象判断key存在性的写法冗余,执行效率低。
修正实现
let object = { a: "hund", b: "katze", c: "maus", d: "elefant", e: "schlange", f: "stachelschwein", g: "affe", h: "giraffe" } function getObjectElements(keys) { let result = []; for (let i = 0; i < keys.length; i++) { const curKey = keys[i]; // 判断对象是否包含当前传入的key if (object.hasOwnProperty(curKey)) { result.push(object[curKey]) } else { // key不存在时插入兜底值 result.push('not found') } } return result; }
逻辑说明
- 调用对象原生
hasOwnProperty方法可以直接判断指定key是否为对象的自有属性,无需遍历对象全量key,执行效率更高 - 每处理一个传入的key就做一次存在性校验,匹配成功返回对应value,失败返回
not found,最终返回数组的长度和传入的keys数组长度完全对应,符合需求。
内容的提问来源于stack exchange,提问作者Szymon Szewczyk
相关产品推荐
相关产品推荐

