如何获取array1中各元素在array2对应的索引位置?
问题:如何修改JavaScript代码实现数组元素位置对应输出?
我正在遍历数组元素,检查对应元素以按正确顺序展示它们。现有如下JavaScript代码:
const array1 = ["one", "two", "three", "four"] const array2 = ["two", "three", "one", "four"] for (i = 0; i < array1.length; i++) { console.log(array1); console.log(array1.filter((element) => array2.includes(element))); // 此处我尝试遍历array1的每个元素,找到其在array2中的对应元素。 }
期望输出为类似如下格式:
array1[0]对应的位置是array2[2], array1[1]对应的位置是array2[1], 以此类推。
请问如何修改代码实现该需求?
解决方案
你可以利用数组的indexOf()方法直接获取元素在array2中的索引位置,遍历array1的每个元素并输出对应关系即可,无需使用filter(你的需求是逐个匹配位置,而非过滤元素)。修改后的代码如下:
const array1 = ["one", "two", "three", "four"] const array2 = ["two", "three", "one", "four"] // 遍历array1的每个元素及其索引 for (let i = 0; i < array1.length; i++) { const element = array1[i]; // 获取当前元素在array2中的索引 const indexInArray2 = array2.indexOf(element); // 按照期望格式输出 console.log(`array1[${i}]对应的位置是array2[${indexInArray2}],`); }
代码说明:
array2.indexOf(element)会返回元素在array2中第一个匹配项的索引,若元素不存在则返回-1,可按需添加判断逻辑- 使用模板字符串
`...`拼接输出内容,保证格式符合要求 - 循环中用
let i声明局部变量,避免全局变量污染
运行代码后,控制台会输出:
array1[0]对应的位置是array2[2], array1[1]对应的位置是array2[0], array1[2]对应的位置是array2[1], array1[3]对应的位置是array2[3],
如果需要处理元素不存在于array2的情况,可添加判断逻辑:
for (let i = 0; i < array1.length; i++) { const element = array1[i]; const indexInArray2 = array2.indexOf(element); if (indexInArray2 !== -1) { console.log(`array1[${i}]对应的位置是array2[${indexInArray2}],`); } else { console.log(`array1[${i}]的元素${element}在array2中不存在`); } }
内容的提问来源于stack exchange,提问作者Aurore
相关产品推荐
相关产品推荐

