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

如何修改嵌套数组对象的name值?使用path.parse提取文件名

修改嵌套数组对象的name属性值

看起来你已经找对了方向——用path.parse()来提取文件名,但你的代码只计算了新的name值并打印,没有把它赋值回原对象,所以数组没被更新。咱们来修正一下:

首先,确保你已经引入了Node.js的path模块:

const path = require('path');

然后调整你的遍历代码,把计算好的新name值赋值给对应的对象:

const array = [
  { "name": "core Test", "item": [ { "name": "test/core/core.js", "item": [] } ] },
  { "name": "users Test", "item": [ { "name": "test/users/user.js", "item": [] } ] }
];

array.forEach((element) => {
  // 遍历外层元素的item子数组
  element.item.forEach((i) => {
    // 解析name路径,提取不带扩展名的文件名并赋值回去
    i.name = path.parse(i.name).name;
  });
});

console.log(array); // 这里就能看到你期望的输出了

为什么这样可行?

因为数组里的对象是引用类型,在forEach里修改对象的属性,会直接作用于原数组中的对象,不需要额外返回新数组(当然如果你想创建新数组不修改原数组,可以用map,不过你的需求是更新原数组,所以forEach足够)。

期望输出验证

运行上面的代码后,输出会和你想要的完全一致:

[
  { "name": "core Test", "item": [ { "name": "core", "item": [] } ] },
  { "name": "users Test", "item": [ { "name": "user", "item": [] } ] }
]

如果你的数组可能有更深的嵌套(比如item里还有多层item),可以改成递归函数处理,但根据你给出的示例,上面的代码已经足够解决问题啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:10:06