如何创建可根据输入向两个不同数组添加元素的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
相关产品推荐
相关产品推荐

