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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 18:48:03