如何访问列表中每个对象的body属性并检查特定单词是否存在
问题分析与解决
你的代码存在两处核心问题,下面逐一修正:
1. 数组定义语法错误
j_list数组内部不能用const post = {...}声明对象,直接写入对象字面量即可。
修正后的j_list:
const j_list = [ { "postId": 1, "id": 1, "name": "id labore ex et quam laborum", "email": "Eliseo@gardner.biz", "body": "laudantium enim quasi est quidem magnam voluptate ipsam eos\ntempora quo necessitatibus\ndolor quam autem quasi\nreiciendis et nam sapiente accusantium" }, { "postId": 1, "id": 2, "name": "quo vero reiciendis velit similique earum", "email": "Jayne_Kuhic@sydney.com", "body": "est natus enim nihil est dolore omnis voluptatem numquam\net omnis occaecati quod ullam at\nvoluptatem error expedita pariatur\nnihil sint nostrum voluptatem reiciendis et" }, { "postId": 1, "id": 3, "name": "odio adipisci rerum aut animi", "email": "Nikita@garfield.biz", "body": "quia molestiae reprehenderit quasi aspernatur\naut expedita occaecati aliquam eveniet laudantium\nomnis quibusdam delectus saepe quia accusamus maiores nam est\ncum et ducimus et vero voluptates excepturi deleniti ratione" } ];
2. 循环与字符串检查逻辑错误
for...in遍历数组时拿到的是索引字符串,不是数组中的post对象,因此post.body会报错,应改用for...of遍历数组元素,或forEach方法。includes()方法直接返回布尔值,不需要和-1比较(indexOf()才会返回索引,找不到时返回-1)。
方案一:使用for...of循环
for (const post of j_list) { if (post.body.includes("quasi")) { console.log("This post contains that word"); } else { console.log("This post doesn't contain any search word"); } }
方案二:使用forEach方法
j_list.forEach(post => { if (post.body.includes("quasi")) { console.log("This post contains that word"); } else { console.log("This post doesn't contain any search word"); } });
兼容旧环境的传统for循环
for (let i = 0; i < j_list.length; i++) { const post = j_list[i]; if (post.body.includes("quasi")) { console.log("This post contains that word"); } else { console.log("This post doesn't contain any search word"); } }
内容的提问来源于stack exchange,提问作者Thestrike95
相关产品推荐
相关产品推荐

