JavaScript如何判断数组嵌套对象内是否存在指定prodCode并返回true
JavaScript 嵌套对象数组指定值存在性判定实现
实现思路
利用数组原生some()方法的短路特性:只要遍历到第一个符合条件的元素就立即返回true,终止后续遍历,性能最优。两层some()分别遍历外层数组、内层holdings数组即可匹配需求。
完整实现代码
// 源数据 const sourceData = [ { holdings: [ { product: { id: 1, prodName: 'LX세미콘', prodCode: '108320' } }, { product: { id: 2, prodName: '컴투스', prodCode: '078340' } } ] }, { holdings: [ { product: { id: 1, prodName: 'LX세미콘', prodCode: '108320' } } ] } ] /** * 检查是否存在指定prodCode的产品 * @param {Array} data 源嵌套数组 * @param {String} targetCode 待匹配的prodCode * @returns {Boolean} 存在返回true,不存在返回false */ function checkProdCodeExist(data, targetCode) { return data.some(group => group.holdings.some(holding => holding.product?.prodCode === targetCode ) ) } // 测试调用 console.log(checkProdCodeExist(sourceData, '108320')) // 输出 true
注意事项
- 代码中使用的可选链操作符
?.可兼容ES2020及以上运行环境,低版本场景可替换为holding.product && holding.product.prodCode === targetCode避免属性不存在时报错。 - 如果后续嵌套层级变更,可将逻辑改造为递归实现适配更深的嵌套结构。
内容的提问来源于stack exchange,提问作者broheat
相关产品推荐
相关产品推荐

