JS从对象数组筛选含submittedData属性项,find仅返回首项如何解决
实现方案
要筛选数组中所有符合条件的对象,使用Array.prototype.filter()方法即可,该方法会返回由所有通过测试的元素组成的新数组,完全匹配你的需求。
修正后代码
const data = [ { id: '1', name: 'Tully Stark', submittedData:'mmmmm' }, { id:'2', name: 'Nalani Romanova', }, { id:'3', name: 'Nalani Romanova', submittedData:'mmmmm' } ] const returnData = data.filter(item => item.submittedData) console.log(returnData)
如果你需要严格判定对象是否存在对应属性(哪怕属性值为0、空字符串、false这类假值也保留),可以用hasOwnProperty做判定:
// 注意你问题描述中写的属性名是submittedDate,和测试代码里的submittedData不一致,实际使用时请对齐属性名 const returnData = data.filter(item => item.hasOwnProperty('submittedData'))
原方法的问题
find()方法的设计逻辑就是仅返回第一个符合条件的元素,找到后就停止遍历,因此只能拿到第一个匹配对象map()方法会返回和原数组长度完全一致的新数组,每个位置对应原数组元素的转换结果,不符合条件的项会返回undefined,无法直接得到筛选后的结果
内容的提问来源于stack exchange,提问作者madhu malli
相关产品推荐
相关产品推荐

