JavaScript中如何扩展现有函数实现删除对象嵌套结构内的数组元素?
实现方案
你只需要在原函数中新增delete操作的逻辑分支即可,同时注意先修复原代码中被错误转义的&&为合法的&&运算符,修改后的完整代码如下:
var ex = { "list_1": { "money": 1000, "manager": "Louis", "cars": ["mazda", "ford_focus"] }, "list_2": { "money": 300, "manager": "Keen", "cars": ["fiat", "dacia"] } }; function updateFunction(option, id, prop, value) { if (option == "update") { if (prop == "money" && value != "") { ex[id][prop] = value; } else if (prop == "manager" && value != "") { ex[id][prop] = value; } else if (prop == "cars") { ex[id][prop].push(value); } } else if (option == "delete") { // 处理删除cars首元素的逻辑 if (prop == "cars" && ex[id]?.cars?.length > 0) { ex[id].cars.shift(); } } return ex; }; // 测试示例 updateFunction("delete","list_1","cars"); console.log(ex.list_1.cars) // 输出 ["ford_focus"],符合预期
核心修改说明
- 新增了
delete操作的判断分支,针对prop为cars的场景,调用JS数组原生的shift()方法,该方法会直接删除数组的第一个元素并修改原数组,正好匹配需求 - 新增了可选链
?.和数组长度判断,避免目标id不存在、cars属性不存在或者cars为空数组时调用shift()抛出错误,提升代码健壮性
内容的提问来源于stack exchange,提问作者Kvorin
相关产品推荐
相关产品推荐

