如何从链接对象中删除不需要的属性?

How to remove unwanted properties from linked object?

我有以下结构:

{
  cp: {
    id: 8,
    login: "something@gmail.com",
    name: "Yuri",
    age: 19,
    ...
  },
  admin: {
    id: 19,
    login: "test",
    password: "somehash",
    ...
  }
}

我希望这个对象只有 idlogin 属性,例如:

{
  cp: {
    id: 8,
    login: "something@gmail.com"
  },
  admin: {
    id: 19,
    login: "test"
  }
}

有没有办法使用 lodash 来做到这一点? 我已阅读 但我不知道如何对我的结构执行相同的操作。请帮忙

我没有测试这个,代码,但希望它能帮助你

var obj = {
  cp: {
    id: 8,
    login: "something@gmail.com",
    name: "Yuri",
    age: 19,
    ...
  },
  admin: {
    id: 19,
    login: "test",
    password: "somehash",
    ...
  }
}
var model = {
   id:null,
   login:null
};
Object.keys(obj).forEach(e=>obj[e] = _.pick(obj[e], _.keys(model)))

没有 lodash 的更新

var obj = {
                cp: {
                    id: 8,
                    login: "something@gmail.com",
                    name: "Yuri",
                    age: 19,
                },
                admin: {
                    id: 19,
                    login: "test",
                    password: "somehash",
                }
            }
            const keeps = ["id","login"];
            Object.keys(obj).forEach(e=>{
                Object.keys(obj[e]).forEach(f=>{
                    if(!keeps.includes(f)){
                        delete obj[e][f]
                    }
                })
            })

您可以使用 transformpick 来转换您的对象。

const obj = { cp: { id: 8, login: "something@gmail.com", name: "Yuri", age: 19, }, admin: { id: 19, login: "test", password: "somehash", }, },
      result = _.transform(obj, (r, v, k) => {
        r[k] = _.pick(v, ['id', 'login']);
        return r;
      }, {});
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.21/lodash.min.js"></script>

我知道您专门使用 lodash 搜索了解决方案,但您也可以像这样完成同样的事情。

const data = {
  cp: {
    id: 8,
    login: "something@gmail.com",
    name: "Yuri",
    age: 19,
  },
  admin: {
    id: 19,
    login: "test",
    password: "somehash",
  }
}

const result = Object.fromEntries(Object.entries(data)
  .map(([k, {id, login}]) => [k, {id, login}]));

console.log(result);

它通过对象 entries 和 returns 仅映射您需要的属性作为新条目以从中重新创建对象。