如何依据array1的非*索引筛选array2元素生成array3?
解决数组筛选匹配的问题
别担心,新手刚接触数组处理遇到这类问题太正常啦!我来帮你实现想要的array3~
思路说明
核心逻辑就是遍历array1的每个元素,检查当前索引对应的array1元素是否为"*",如果不是,就把array2相同索引位置的元素存入array3。
方案一:用forEach遍历(新手友好,逻辑直观)
这种写法步骤清晰,容易理解每一步的操作:
var array1 = [39, "*", 62, "*", "*", 33.09,"*",56]; var array2 = [55, 6, 28, 32, 66, 58,15,56]; var array3 = []; // 遍历array1的每个元素,同时获取它的索引 array1.forEach((currentItem, index) => { // 如果当前元素不是"*",就把array2对应索引的元素加入array3 if (currentItem !== "*") { array3.push(array2[index]); } }); console.log(array3); // 输出结果:[55,28,58,56]
方案二:用filter+map链式调用(更简洁的写法)
如果想让代码更紧凑,可以用数组的链式方法来实现:
var array1 = [39, "*", 62, "*", "*", 33.09,"*",56]; var array2 = [55, 6, 28, 32, 66, 58,15,56]; var array3 = array1 // 先把每个元素和它的索引配对成对象,方便后续关联 .map((item, index) => ({ item, index })) // 过滤掉item为"*"的项 .filter(pair => pair.item !== "*") // 提取剩下的项对应的array2元素 .map(pair => array2[pair.index]); console.log(array3); // 同样得到:[55,28,58,56]
两种方法都能得到你想要的结果,你可以根据自己的理解程度选择适合的写法~
内容的提问来源于stack exchange,提问作者Reactive lance
相关产品推荐
相关产品推荐

