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

如何仅修改数组对象中第二层(name为Pear)的isFavorite值

问题排查与修正

原代码的核心问题:

  • 属性访问错误:你用了fruit[1].attributes,但map循环里的每一项fruit是数组中的单个对象(比如{name: "apple", attributes: [...]}),并非数组,fruit[1]会返回undefined,导致无法正确获取attributes甚至报错。
  • 缺少条件判断:没有针对name === "Pear"的场景做区分,导致所有水果的attributes里的isFavorite都被修改了。

修正后的代码:

const fruitChecked = fruits.map((fruit) => {
  // 仅针对name为"Pear"的水果修改属性
  if (fruit.name === "Pear") {
    return {
      ...fruit,
      attributes: fruit.attributes.map((attribute) => ({
        ...attribute,
        isFavorite: true
      }))
    };
  }
  // 其他水果直接返回浅拷贝,避免修改原数组
  return { ...fruit };
});

逻辑说明:

  • 用map遍历水果数组,对每个对象做判断:
    • 若当前水果name为"Pear",则拷贝该对象,并遍历其attributes数组,将每个属性对象的isFavorite设为true。
    • 若不是"Pear",则返回原对象的浅拷贝,既不修改原数组,也保留其他水果的原有属性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 13:50:02