如何从链接对象中删除不需要的属性?
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",
...
}
}
我希望这个对象只有 id
和 login
属性,例如:
{
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]
}
})
})
您可以使用 transform
和 pick
来转换您的对象。
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 仅映射您需要的属性作为新条目以从中重新创建对象。
我有以下结构:
{
cp: {
id: 8,
login: "something@gmail.com",
name: "Yuri",
age: 19,
...
},
admin: {
id: 19,
login: "test",
password: "somehash",
...
}
}
我希望这个对象只有 id
和 login
属性,例如:
{
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]
}
})
})
您可以使用 transform
和 pick
来转换您的对象。
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 仅映射您需要的属性作为新条目以从中重新创建对象。