如何修改JavaScript函数判断对象programmingLanguage是否包含Java?
修改函数实现多语言字符串中检测Java的功能
原函数的问题在于用严格相等判断,只能识别完全等于"Java"的字符串,没法处理"C, Java"这种多语言逗号分隔的场景,还得注意别把"JavaScript"误判成包含Java。
方法一:分割字符串后精准匹配
先把programmingLanguage按逗号分割成数组,再去除每个元素的前后空格,最后检查数组里是否包含"Java":
function hasExamplesInJava(book) { // 处理属性不存在的情况,避免报错 if (!book.programmingLanguage) { return "No data available"; } // 分割字符串并去除每个语言的前后空格 const languages = book.programmingLanguage.split(',').map(lang => lang.trim()); // 检查是否包含Java return languages.includes("Java") ? true : "No data available"; }
方法二:正则表达式匹配独立单词
用正则匹配独立的Java单词,避免匹配JavaScript这类包含Java但不是目标的字符串:
function hasExamplesInJava(book) { if (!book.programmingLanguage) { return "No data available"; } // \b 匹配单词边界,确保Java是独立的单词 const javaRegex = /\bJava\b/; return javaRegex.test(book.programmingLanguage) ? true : "No data available"; }
测试示例
用你提供的三个对象测试:
const book1 = { title: "Algorithms", author: ["Robert Sedgewick", "Kevin Wayne"], programmingLanguage: "Java", }; const book2 = { title: "Structure and Interpretation of Computer Programs", author: ["Harold Abelson", "Gerald Jay Sussman", "Julie Sussman (Contributor)"], programmingLanguage: "JavaScript", }; const book3 = { title: "Operating System Concepts", author: ["Abraham Silberschatz", "Peter B. Galvin", "Greg Gagne"], programmingLanguage: "C, Java", }; console.log(hasExamplesInJava(book1)); // true console.log(hasExamplesInJava(book2)); // No data available console.log(hasExamplesInJava(book3)); // true
这样修改后,既能正确识别"Java"和"C, Java",也不会把"JavaScript"误判。
内容的提问来源于stack exchange,提问作者Zuka Kharati
相关产品推荐
相关产品推荐

