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

基于查找表替换数组中的值——JavaScript实现

用查找表替换数组中的缩写ID

问题场景

你需要将二维数组中的缩写ID替换为查找表对应的完整值,相关数据如下:

原始数组

const original = 
[ [ '18', 'v'],
  [ '20', 'aev'],
  [ '22', 'v'],
  [ '23', 'v'],
  [ '25', 'c'],
  [ '29', 'vv'],
  [ '30', 'c'] ]

查找表

const lookup = {'v' : 'monkey', 'aev' : 'dog', 'c' : 'cow', 'vv': 'lion'};

期望结果

const result = 
[ [ '18', 'monkey'],
  [ '20', 'dog'],
  [ '22', 'monkey'],
  [ '23', 'monkey'],
  [ '25', 'cow'],
  [ '29', 'lion'],
  [ '30', 'cow'] ] 

解决方案

1. 使用map函数(推荐)

map是数组转换的首选方式,它会遍历原数组每个元素,返回转换后的新数组,不会修改原数组:

const result = original.map(item => [item[0], lookup[item[1]]]);

核心逻辑是精确匹配查找表的键:直接用子数组的第二个元素(如'aev')作为键取值,不会出现混淆'aev'和'v'的问题——对象的键是完全匹配的,不存在模糊匹配的情况。

2. 使用for循环

如果更习惯循环写法,直接遍历原数组,逐个构造新元素存入结果数组即可:

const result = [];
for (const item of original) {
  result.push([item[0], lookup[item[1]]]);
}

或者用传统的索引循环:

const result = [];
for (let i = 0; i < original.length; i++) {
  const current = original[i];
  result.push([current[0], lookup[current[1]]]);
}

关于之前的匹配错误

你之前用循环出错,大概率是自己额外加了模糊匹配的逻辑(比如遍历查找表的键去部分匹配),其实完全不需要这么做——直接用子数组的第二个元素作为键去查找表取值,就是精确匹配,不会出现误匹配的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 20:55:12