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

如何创建可根据输入向两个不同数组添加元素的JS函数

合并函数实现方案

你目前的问题是仅靠detail内容参数无法判断要存入的目标数组,需要新增参数传递列表类型标识,以下是几种可直接使用的实现方案:

方案1:新增类型参数+if/else判断(最易理解)

新增第二个入参标识是优点/缺点类型,通过分支判断推入对应数组:

var housePros = ['3 bed', '2 bath'];
var houseCons = ['over budget'];

// type 入参可选值为 'pros'(优点) 或 'cons'(缺点)
function addToList(detail, type) {
  if (type === 'pros') {
    housePros.push(detail);
    console.log('Updated Pros List: ', housePros);
  } else if (type === 'cons') {
    houseCons.push(detail);
    console.log('Updated Cons List: ', houseCons);
  } else {
    // 可选:增加非法参数容错提示
    console.error('类型错误,仅支持传入 pros 或 cons');
  }
}

// 调用示例
addToList('big yard', 'pros');
addToList('no garage', 'cons');

方案2:单对象传参(适合参数较多的场景)

如果你不想用两个入参,可以把内容和类型都封装到单个对象参数中传递:

function addToList(detailInfo) {
  const { content, type } = detailInfo;
  if (type === 'pros') {
    housePros.push(content);
    console.log('Updated Pros List: ', housePros);
  } else if (type === 'cons') {
    houseCons.push(content);
    console.log('Updated Cons List: ', houseCons);
  }
}

// 调用示例
addToList({ content: 'big yard', type: 'pros' });
addToList({ content: 'no garage', type: 'cons' });

方案3:对象映射简化分支(更简洁的写法)

如果后续会扩展更多列表类型,可以用映射表替代if/else分支,代码更易维护:

var housePros = ['3 bed', '2 bath'];
var houseCons = ['over budget'];
// 建立类型和数组的映射关系
const listMap = {
  pros: housePros,
  cons: houseCons
}

function addToList(detail, type) {
  if (!listMap[type]) {
    return console.error('无效的列表类型');
  }
  listMap[type].push(detail);
  console.log(`Updated ${type} List: `, listMap[type]);
}

// 调用示例和方案1完全一致
addToList('big yard', 'pros');
addToList('no garage', 'cons');

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 16:48:02