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

JavaScript如何将对象数组作为指定键属性添加到目标对象中

问题原因

你得到双层嵌套数组的核心原因是Array.push()会将传入的参数作为单个元素追加到数组末尾。你传入的arrObj本身就是数组类型,会被当做整体塞入初始为空的level数组,自然就出现了多余的一层嵌套。

正确实现方式

下面几种写法都能得到你预期的结构,根据实际场景选择即可:

  • 定义对象时直接赋值(最简洁,推荐)
var obj = {
    name: $('#name').val(),
    // 注意:原代码中$('age')是标签选择器,如果要取id为age的输入框值,需要写成$('#age'),否则会取不到值
    age:  $('#age').val(),
    level: arrObj
};
  • 对象定义完成后追加属性
    如果你是在obj创建完成后,才需要把arrObj绑定到level键上,直接赋值即可:
// 初始定义的obj
var obj = {
    name: $('#name').val(),
    age:  $('#age').val()
};

// 后续追加属性,两种写法等价
obj.level = arrObj;
// obj['level'] = arrObj;
  • 保留level原有元素的场景
    如果你的level数组本来就存在其他初始元素,需要把arrObj里的每一项追加进去而不是整体替换,可以用展开运算符:
var obj = {
    name: $('#name').val(),
    age:  $('#age').val(),
    level: [/* 这里可以放已有的level元素 */]
};

// 把arrObj里的每个元素逐个追加到level数组中,不会产生嵌套
obj.level.push(...arrObj);
写法差异说明
  • 错误写法obj.level.push(arrObj):最终level数组长度为1,唯一元素就是arrObj本身,会产生嵌套
  • 直接赋值写法:level直接指向arrObj数组,完全匹配你要的结构,性能最好
  • 展开push写法:会遍历arrObj把元素逐个追加,适合需要保留level原有内容的场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 07:09:16