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

JavaScript如何选中指定type对象并push添加对应user数据

实现方案

首先先修正你示例里的基础语法错误:JavaScript 中键值对结构必须用对象 {} 包裹,数组 [] 只能存储按索引排列的单值,你写的 ['name':'mat','phone':'5555'] 属于非法语法,要改成 {name:'mat', phone:'5555'} 才能正常运行。

你的需求是给已存在的、匹配指定 type 的数组项新增用户数据,这种场景不需要用 push——push 是用来往数组末尾追加新元素的,直接遍历找到匹配项后给属性赋值即可;如果后续需要给同一个 type 绑定多个用户,再用 push 往用户数组里追加数据。


基础版:给指定type项绑定单个用户

完全匹配你示例的预期输出,代码如下:

// 原始type列表
const items = [{type: '1'}, {type: '2'}]

/**
 * 给指定type的项加载用户数据
 * @param {string} targetType 要匹配的type值
 * @param {object} userData 用户数据对象
 */
function setUserForType(targetType, userData) {
  // 找到第一个匹配type的数组项
  const target = items.find(item => item.type === targetType)
  if (target) {
    // 直接给匹配项新增user属性赋值
    target.user = userData
  }
  return items
}

// 测试调用
setUserForType('1', {name:'mat', phone:'5555'})
const finalResult = setUserForType('2', {name:'nicol', phone:'888'})

console.log(finalResult)
/* 输出和你预期完全一致:
[
  {type: '1', user: {name:'mat', phone:'5555'}},
  {type: '2', user: {name:'nicol', phone:'888'}}
]
*/

多用户版:同个type下追加多个用户(用到push)

如果后续需要给同一个type项绑定多个用户,就把user字段初始化为数组,追加数据时用push:

const items = [{type: '1'}, {type: '2'}]

function pushUserForType(targetType, userData) {
  const target = items.find(item => item.type === targetType)
  if (target) {
    // 第一次绑定用户时如果user数组不存在,先初始化为空数组
    if (!Array.isArray(target.user)) {
      target.user = []
    }
    // 追加新用户到列表
    target.user.push(userData)
  }
  return items
}

// 测试:给type=1的项先后加2个用户
pushUserForType('1', {name:'mat', phone:'5555'})
pushUserForType('1', {name:'tom', phone:'6666'})

补充说明

  • 如果你的数组里存在多个相同type的项需要同时绑定用户,把代码里的find换成filter,遍历所有匹配项逐一赋值即可
  • 不要混淆对象和数组的语法:带键名的键值对结构统一用{},只有顺序排列的列表值才用[]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 22:42:18