这是我的对象:
{
"user": {
"id": 11,
"name": null,
"email": null,
"phone": "000000000",
"age": null,
"role": "user",
"otp": "656440",
"otpCreatedAt": null,
"createdAt": "2020-10-24T07:38:54.000Z",
"updatedAt": "2020-10-24T07:38:54.000Z"
}
}
我是从mysqldb上查询得到的,现在我不想把所有的值都发送给响应!相反,我需要在一个键下发送选定的值!
预期输出
{
"user" :{
"name": null,
"email": null,
"phone": "000000000",
"age": null,
}
}
我可以分割这个并像name: user.name
等一样发送,但我需要所有需要的密钥!
如何做到这一点?
到现在为止,我只是这样分裂它!
phone: user.phone, name: user.name, age: user.age, email: user.email
只需使用旧对象中所需的键/值构造一个新对象。
let u = {
"user": {
"id": 11,
"name": null,
"email": null,
"phone": "000000000",
"age": null,
"role": "user",
"otp": "656440",
"otpCreatedAt": null,
"createdAt": "2020-10-24T07:38:54.000Z",
"updatedAt": "2020-10-24T07:38:54.000Z"
}
}
let newuser = {user: {name: u.user.name, email: u.user.email, phone: u.user.phone, age: u.user.age}};
console.log(newuser);
这是一个好的解决方案吗?我想走这条路。
const { user: { name, email, phone, age } } = {
"user": {
"id": 11,
"name": null,
"email": null,
"phone": "000000000",
"age": null,
"role": "user",
"otp": "656440",
"otpCreatedAt": null,
"createdAt": "2020-10-24T07:38:54.000Z",
"updatedAt": "2020-10-24T07:38:54.000Z"
}
};
const expectedResult = {
"user": { name, email, phone, age }
}
属性可以使用JSON.parse
reviver和JSON.stringify
replacer:排除
var o = { "user": { "id": 11, "name": null, "email": null, "phone": "000000000", "age": null, "role": "user", "otp": "656440", "otpCreatedAt": null, "createdAt": "2020-10-24T07:38:54.000Z", "updatedAt": "2020-10-24T07:38:54.000Z" } }
var j = JSON.stringify(o, (k, v) => /^(|user|name|email|phone|age)$/.test(k) ? v : undefined, 2)
console.log(j)