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

如何依据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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:20:22