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

JavaScript如何向对象内已有的空数组分别推入对应预处理数据

问题说明

现有主对象dataToMovie,其links属性下定义了mov、ser、rev、ext四个空数组。已完成arr、arr2两个待插入数据的格式转换,需要实现正确的数组赋值逻辑,同时支持后续给其余数组独立插入多组数据。

附初始代码:

const dataToMovie = {
  createMovie,
  links: {
    mov: [],
    ser: [],
    rev: [],
    ext: [],
  },
};

const dataToInsert1 = {
  'model-10389': 164703,
  'model-10388': 164704,
  'model-10387': 164705,
};

const dataToInsert2 = {
  'model-10389': [1656, 1234, 1245],
  'model-10384': [1656, 1234, 1245],
  'model-10383': [1656, 1234, 1245],
};

const arr = Object.entries(dataToInsert1).map((entry) => ({
  id: entry[0].substring(6, entry[0].length),
  value: entry[1],
}));

const arr2 = Object.entries(dataToInsert2).map(([key, value]) => ({
  modelId: key.substring(6),
  ids: value,
}));
错误写法说明

注释中写的dataToMovie.links.mov[arr]、dataToMovie.links.ser[arr2]是无效写法:方括号在这里是数组/对象的键访问语法,会把arr、arr2转成字符串作为键名,不会把数组内容存入目标数组。

正确实现

根据使用场景选择对应写法即可:

  • 首次初始化赋值(目标数组为空时使用)
    直接将转换完成的数组赋值给对应属性即可,会把转换好的所有元素存入目标数组:

    // 存入mov数组
    dataToMovie.links.mov = arr;
    // 存入ser数组
    dataToMovie.links.ser = arr2;
    
  • 多批次追加数据(不覆盖原有内容,适合后续多次插入场景)
    如果后续需要往对应数组追加新的数据集,用push配合展开运算符实现,不会覆盖之前已经存入的数据,四个数组的插入逻辑完全独立:

    // 追加新批次数据到mov数组,newMovData是后续新转换好的待插入数组
    dataToMovie.links.mov.push(...newMovData);
    
    // 追加新批次数据到ser数组
    dataToMovie.links.ser.push(...newSerData);
    
    // 后续给rev、ext数组插数据逻辑一致
    dataToMovie.links.rev.push(...newRevData);
    dataToMovie.links.ext.push(...newExtData);
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 01:30:47