如何解决如何在仅具有“子”数组的一个已标识属性的数组中查找对象的ID
我希望使用Java语言中最优化的方法来开发一个函数,以找到仅具有“子”对象代码(在dataArray内部)的“父”对象的id。
示例: getIdParent(“ 240#code”)->返回“ 1”
[
{
id: 0,dataArray:[
{
id: 182,code: "182#code",name: "Product1"
},{
id: 183,code: "183#code",name: "Product2"
}
]
},{
id: 1,dataArray:[
{
id: 240,code: "240#code",name: "Product2"
},{
id: 341,code: "341#code",name: "Product2"
}
]
}
]
谢谢。
解决方法
您在这里实际上没有太多选择。
我能想到的唯一真正的优化是基于您期望调用此函数的频率。
如果只有一次,则只需要迭代数组,搜索值并尽早返回以防止不必要的迭代。
function getIdParent(childCode) {
return arr.find(parent =>
parent.dataArray.some(({ code }) => code === childCode))?.id
}
如果多次,则应建立子code
到父对象的索引映射,然后对其进行引用
const arr = [{"id":0,"dataArray":[{"id":182,"code":"182#code","name":"Product1"},{"id":183,"code":"183#code","name":"Product2"}]},{"id":1,"dataArray":[{"id":240,"code":"240#code","name":"Product2"},{"id":341,"code":"341#code","name":"Product2"}]}]
const codeMap = arr.reduceRight((map,parent) => {
parent.dataArray.forEach(({ code }) => {
map.set(code,parent)
})
return map
},new Map())
function getIdParent(code) {
return codeMap.get(code)?.id
}
let search = ["240#code","182#code","NotFound"]
search.forEach(code => {
console.log("Parent ID for",code,"=",getIdParent(code))
})
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。