如何根据对象键名过滤JavaScript对象数组
错误原因分析
- 变量名不匹配:你定义的数组变量名为
dataArray,但过滤代码中写的是dataArr,会直接触发变量未定义的报错。 - 过滤逻辑错误:你写的
i[key] === 'name'是判断对象中key属性的值等于字符串name,和你要的「判断对象的键名是否为name」的需求完全不符。
正确实现
基于题目「每个元素仅包含一个键值对」的前提,可以直接取对象的首个键名做判断:
const namesArr = dataArray.filter(item => Object.keys(item)[0] === 'name');
如果需要兼容对象存在多个键值对、只要包含name键就保留的通用场景,可以用hasOwnProperty方法实现:
const namesArr = dataArray.filter(item => item.hasOwnProperty('name'));
内容的提问来源于stack exchange,提问作者Muirik
相关产品推荐
相关产品推荐

