首页 > 解决方案 > 使用过滤功能更新 JSON 中的子项

问题描述

我有一个 JSON 对象(包含我的扩展程序的设置),我想在需要时更新其中的子项。这是我搜索子项的方式:

function GetAppByName(apps, name) {
    return apps.filter(function (app) {
        return app.name === name; 
    });
}

我找到了这种更新子项值的方法,但我不想使用循环来查找它们,

for (var i = 0; i < jsonObj.length; i++) {
  if (jsonObj[i].Id === 3) {
    jsonObj[i].Username = "Thomas";
    break;
  }
}

如何使用过滤器或任何没有 for 循环的方式更新 JSON 中的子项?

标签: javascriptjquerygoogle-chrome-extension

解决方案


如果你知道项目的索引,你可以做

apps = Object.assign(apps.slice(), {[index]: {...apps[index], Username: "Thomas"}})

查找索引:

apps.findIndex((app) => app.Id === 3);

推荐阅读