You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按dialCode匹配将英文国家数组的isoCode同步到丹麦语国家数组

实现方案

你现在的代码只做了匹配筛选,没有做属性合并,用Map先构造拨号代码到isoCode的映射表,再遍历丹麦语数组做属性合并即可,这种方式时间复杂度更低,适合数组长度较大的场景。

完整代码(保留你原有的筛选逻辑,仅返回匹配成功的条目)

// 构造dialCode到isoCode的映射,减少重复遍历
const dialCodeToIso = new Map(this.countryList.map(enItem => [enItem.dialCode, enItem.isoCode]))

const result = this.dkList
  // 筛选逻辑和你原有代码保持一致
  .filter(dkItem => {
    const normalizedDial = dkItem.dialCode.replace('00 ', '+').trim()
    return dialCodeToIso.has(normalizedDial)
  })
  // 合并isoCode属性
  .map(dkItem => {
    const normalizedDial = dkItem.dialCode.replace('00 ', '+').trim()
    return {
      ...dkItem,
      isoCode: dialCodeToIso.get(normalizedDial)
    }
  })

简化写法(适合小体量数组,无需提前构造映射)

const result = this.dkList.map(dkItem => {
  const normalizedDial = dkItem.dialCode.replace('00 ', '+').trim()
  const matchItem = this.countryList.find(enItem => enItem.dialCode === normalizedDial)
  return {
    ...dkItem,
    isoCode: matchItem ? matchItem.isoCode : '' // 未匹配到时isoCode留空,可根据需求调整
  }
})
// 如果需要保留原有筛选逻辑,只保留匹配成功的条目,后面再加个filter即可
// .filter(item => item.isoCode)

注意事项

  • 上述代码用扩展运算符...生成新对象,不会修改原有的dkList数组,如果需要直接修改原数组,直接给dkItem.isoCode赋值即可
  • 若存在多个国家共用同一个dialCode的情况,默认取英文数组中第一个匹配到的条目的isoCode,有特殊需求可自行调整匹配逻辑

内容的提问来源于stack exchange,提问作者Morten Hagh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 20:36:01