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

如何基于两个JS数组生成键为name、target的指定结构对象数组

实现方案

原代码问题

  • 声明的result是普通对象,而你需要的输出是多个name/target结构对象组成的数组,基础数据结构类型不匹配
  • 遍历过程中没有关联v1数组的对应位置元素,也没有组装成要求的键值结构

正确实现

方式1:forEach 实现

var v = [1,2,3,4,5,6];
var v1 = ['A','B','C','D','E'];
var result = []; // 初始化为数组存储多个对象

v.forEach((item, index) => {
  // 仅当v1对应索引有值时才生成对象,避免生成无效项
  if (v1[index] !== undefined) {
    // 如果需要跳过值为3的项,和你给出的示例结果一致,可再加判断 if (item !== 3)
    result.push({
      name: String(item), // 转为字符串匹配预期输出格式
      target: v1[index]
    })
  }
})

console.log('ColResult', result);

方式2:更简洁的map实现

var v = [1,2,3,4,5,6];
var v1 = ['A','B','C','D','E'];
// 先将v截断到和v1相同长度,再遍历映射为目标结构
const result = v.slice(0, v1.length).map((item, index) => ({
  name: String(item),
  target: v1[index]
}))

特殊场景适配

如果你给出的预期结果中{name: "4", target: "C"}是真实需求,确实要跳过v数组中值为3的项,只需要在遍历逻辑中加判断过滤即可,以forEach为例:

v.forEach((item, index) => {
  const v1Index = item > 3 ? index - 1 : index;
  if (v1[v1Index] !== undefined && item !== 3) {
    result.push({
      name: String(item),
      target: v1[v1Index]
    })
  }
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 20:15:03