JavaScript如何将distinguished name(DN)转换为对应域名?
原有代码问题说明
- 存在两个逻辑错误导致结果不符合预期:
- 循环中每次都将
element直接赋值为当前分段的分割结果,完全覆盖了之前的取值,最终仅能保留DN最后一个分段的内容 - 没有对分段的键做过滤,没有仅提取
DC字段对应的值
- 循环中每次都将
单DN转换代码实现
const dn = 'CN=Dan Adam,OU=testUsers,DC=KALK,DC=DTC' const dcValues = [] const parts = dn.split(',') for (let i = 0; i < parts.length; i++) { const [key, value] = parts[i].trim().split('=') if (key === 'DC') { dcValues.push(value) } } const domain = dcValues.join('.') console.log(domain) // 输出:KALK.DTC
DN数组批量转换方案
可以封装转换逻辑为公用函数,再调用数组的map方法批量处理即可:
// 封装单DN转域名的公用函数 function dnToDomain(dn) { const dcValues = [] const parts = dn.split(',') for (let i = 0; i < parts.length; i++) { const [key, value] = parts[i].trim().split('=') if (key === 'DC') { dcValues.push(value) } } return dcValues.join('.') } // 示例DN数组 const dnArr = [ 'CN=Dan Adam,OU=testUsers,DC=KALK,DC=DTC', 'CN=Jack,OU=admin,DC=example,DC=com,DC=cn', 'CN=Lisa,OU=dev,DC=google,DC=com' ] // 批量转换得到域名数组 const domainArr = dnArr.map(dn => dnToDomain(dn)) console.log(domainArr) // 输出:['KALK.DTC', 'example.com.cn', 'google.com']
内容的提问来源于stack exchange,提问作者ddark13
相关产品推荐
相关产品推荐

