如何在HTML中判断response.tasks是否包含指定属性?
解决对象列表中判断是否存在指定属性的问题
你搞混了对象和数组的操作逻辑——response.tasks是对象组成的数组,不是单个对象,所以你之前用的方法都是针对数组本身,而非数组里的每个对象,难怪全返回false。
正确的判断方式
根据你的需求(判断列表中是否存在带指定属性的对象),用数组的some()方法:
// 检查是否至少有一个对象包含userLastName属性 response.tasks.some(task => 'userLastName' in task) // 更严谨的写法(只检查对象自身的属性,排除继承来的) response.tasks.some(task => task.hasOwnProperty('userLastName'))
如果要判断所有对象都包含该属性,就用every():
response.tasks.every(task => task.hasOwnProperty('userLastName'))
为什么之前的方法不对
'userLastName' in response.tasks:你是在检查response.tasks这个数组对象本身有没有userLastName属性,数组的固有属性是length、push这类,自然返回false。response.tasks.hasOwnProperty('userLastName'):同上,还是在检查数组自身的属性,不是数组里的对象。response.tasks.includes('userLastName'):includes是用来查找数组中是否存在和目标值完全相等的元素,你的数组元素是对象,不是字符串'userLastName',所以肯定找不到。
内容的提问来源于stack exchange,提问作者Uri Perkal
相关产品推荐
相关产品推荐

