JS如何从对象数组中筛选role为GUARDIAN且signOrder最高的对象
实现代码
function pickGuardian(arr) { // 筛选role为GUARDIAN的所有对象 const guardianList = arr.filter(item => item.role === 'GUARDIAN') // 无匹配项可根据业务需求调整返回值,这里默认返回null if (!guardianList.length) return null // 单匹配项直接返回 if (guardianList.length === 1) return guardianList[0] // 多匹配项取signOrder最大的对象 return guardianList.reduce((prev, current) => { return current.signOrder > prev.signOrder ? current : prev }) }
测试验证
// 多GUARDIAN场景 const demoArr1 = [ { signOrder: 1, role: 'CONSENTEE' }, { signOrder: 2, role: 'GUARDIAN' }, { signOrder: 3, role: 'GUARDIAN' } ] console.log(pickGuardian(demoArr1)) // 返回{signOrder:3, role: 'GUARDIAN'} // 单GUARDIAN场景 const demoArr2 = [ { signOrder: 1, role: 'CONSENTEE' }, { signOrder: 2, role: 'GUARDIAN' } ] console.log(pickGuardian(demoArr2)) // 返回{signOrder:2, role: 'GUARDIAN'}
内容的提问来源于stack exchange,提问作者Jakub
相关产品推荐
相关产品推荐

