首页 > 解决方案 > 需要使用更新对象返回现有数据结构

问题描述

我想在它通过检查时更新对象,但得到不同的结果。获得预期的首选方式是什么?

这是样本数据:

    var abc = [
            {
            type: "manager",
            members: [{name: 'bob'}, {name: 'rob'}]
            },
            {
            type: "clerk",
            members: [{name: 'foo'}, {name: 'bar'}]
            }
            ];
    

使用此功能:

    function funn() {
      return abc.map((cate) => {
        return cate.members.map((mem) => {
          if (mem.name === 'bob') {
            mem['isBob'] = true;
          }
          return mem;
        });
      });
    }

我想要这种格式(预期):

[
  {
    type: 'manager',
    members: [{ name: 'bob', isBob: true }, { name: 'rob' }],
  },
  {
    type: 'clerk',
    members: [{ name: 'foo' }, { name: 'bar' }],
  },
];

实际是这样的:

[
  {
    members: [{ name: 'bob' }, { name: 'rob' }],
  },
  {
    members: [{ name: 'foo' }, { name: 'bar' }],
  },
];

标签: javascriptarraysecmascript-6

解决方案


您只需要在members数组中找到元素,如果存在,则添加isBob属性。

var abc = [{
    type: "manager",
    members: [{
      name: "bob"
    }, {
      name: "rob"
    }],
  },
  {
    type: "clerk",
    members: [{
      name: "foo"
    }, {
      name: "bar"
    }],
  },
];

const result = abc.map((obj) => {
  const isExist = obj.members.find((o) => o.name === "bob");
  if (isExist) isExist.isBob = true;

  return obj;
});

console.log(result);


推荐阅读