JavaScript实现:根据数组1中变量值的索引获取数组2对应值
解决两个对应数组的交叉取值问题
嘿,这个问题其实很好处理,核心就是利用两个数组索引一一对应的关系——找到变量x在所属数组中的位置,再返回另一个数组相同索引的值就行。我给你分情况说明,再写个通用的代码示例:
核心思路
- 如果
x存在于array1中:找到它的索引,返回array2对应索引的元素 - 如果
x存在于array2中:找到它的索引,返回array1对应索引的元素 - 额外处理:如果
x在两个数组都找不到,可以返回默认值或者抛出错误(避免返回undefined引发问题)
JavaScript 代码示例
function getCorrespondingValue(array1, array2, x) { // 先检查x是否在array1里 const idxInArr1 = array1.indexOf(x); if (idxInArr1 !== -1) { return array2[idxInArr1]; } // 再检查x是否在array2里 const idxInArr2 = array2.indexOf(x); if (idxInArr2 !== -1) { return array1[idxInArr2]; } // 两个数组都找不到x的情况,这里抛出错误,也可以改成返回null之类的默认值 throw new Error(`变量x(${x})在两个数组中都未找到`); } // 测试你给的示例 const array1 = [10, 15, 20, 27]; const array2 = ['up', 'down', 'left', 'right']; // 情况1:x在array2中,返回array1对应值 let x = 'down'; console.log(getCorrespondingValue(array1, array2, x)); // 输出:15 // 情况2:x在array1中,返回array2对应值 x = 20; console.log(getCorrespondingValue(array1, array2, x)); // 输出:left
注意点
如果数组中存在重复值,indexOf只会返回第一个匹配元素的索引。如果你需要处理重复值的场景(比如返回所有对应值),可以把逻辑改成遍历数组收集所有匹配的索引,再返回对应的元素数组。
内容的提问来源于stack exchange,提问作者secno2109832
相关产品推荐
相关产品推荐

