如何使用jQuery按条件获取数组对象中最新或最后一个元素的值
问题根因
你用到的Array.prototype.find()原生方法默认是从数组头部往尾部遍历,匹配到第一个满足条件的元素就直接返回、终止遍历,所以永远只能拿到第一个符合要求的Ravi对应的日期,拿不到最后一个。
解决方案
方案1:先筛选所有匹配项再取最后一位(易理解,代码量少)
先通过filter把所有Name为Ravi的元素筛选出来,再直接取结果数组的最后一项即可:
// 筛选所有匹配的元素 const matchedList = arryObj.filter(item => item.Name === 'Ravi') if (matchedList.length > 0) { // 取最后一个匹配项的访问日期 const VisitDate = matchedList[matchedList.length - 1].VisitingDate // 兼容现代浏览器也可以写成 matchedList.at(-1).VisitingDate }
方案2:用jQuery的$.grep方法筛选(符合jQuery实现要求)
如果你习惯用jQuery的工具方法,可以用$.grep做筛选,逻辑和上面一致:
const matchedList = $.grep(arryObj, function(item) { return item.Name === 'Ravi' }) if (matchedList.length) { const VisitDate = matchedList[matchedList.length - 1].VisitingDate }
方案3:倒序遍历(性能最优,适合数组量大的场景)
直接从数组最后一位开始往前找,匹配到第一个符合条件的元素就终止遍历,不需要遍历整个数组:
let VisitDate = null for (let i = arryObj.length - 1; i >= 0; i--) { if (arryObj[i].Name === 'Ravi') { VisitDate = arryObj[i].VisitingDate break } } // 后续直接判断VisitDate是否有值即可
内容的提问来源于stack exchange,提问作者sekhar
相关产品推荐
相关产品推荐

