从负载中删除密钥
Remove key from payload
我想从以下响应中删除密钥 team_id:
{
"id": 14,
"name": "Angel Stadium of Anaheim",
"opened": "1966-04-19T00:00:00.000Z",
"capacity": 45517,
"location": "Anaheim, California",
"team_id": "95cbbe2a",
"team": {
"id": "95cbbe2a",
"name": "Los Angeles Angels",
"established_in": 1961,
"league": "American League",
"division": "West Division",
"logo": "https://upload.wikimedia.org/wikipedia/commons/7/79/Los_Angeles_Angels_of_Anaheim_Insignia.svg",
"number_of_titles":1
}
}
我现在使用的代码从场地获取所有数据,起初我需要所有这些数据但在最后的响应中我想省略 team_id 键:
const venues = await connection(VENUE_TABLE)
.limit(LIMIT_PER_PAGE)
.offset((page - 1) * LIMIT_PER_PAGE)
.select('*')
.orderBy('name');
const venuesWithTeam = await venues.reduce(
(promise, element) =>
promise.then(async (result) =>
result.concat({
...element,
team: await connection('team')
.where('id', element.team_id)
.select('*')
.first(),
})
),
Promise.resolve([])
);
期望的行为是:
{
"id": 14,
"name": "Angel Stadium of Anaheim",
"opened": "1966-04-19T00:00:00.000Z",
"capacity": 45517,
"location": "Anaheim, California",
"team": {
"id": "95cbbe2a",
"name": "Los Angeles Angels",
"established_in": 1961,
"league": "American League",
"division": "West Division",
"logo": "https://upload.wikimedia.org/wikipedia/commons/7/79/Los_Angeles_Angels_of_Anaheim_Insignia.svg",
"number_of_titles":1
}
}
我该怎么做才能做到这一点?
使用Object.assign
从现有对象创建一个新对象,然后使用delete
删除键
let data = {
"id": 14,
"name": "Angel Stadium of Anaheim",
"opened": "1966-04-19T00:00:00.000Z",
"capacity": 45517,
"location": "Anaheim, California",
"team_id": "95cbbe2a",
"team": {
"id": "95cbbe2a",
"name": "Los Angeles Angels",
"established_in": 1961,
"league": "American League",
"division": "West Division",
"logo": "https://upload.wikimedia.org/wikipedia/commons/7/79/Los_Angeles_Angels_of_Anaheim_Insignia.svg",
"number_of_titles": 1
}
}
let newData = Object.assign({}, data);
delete newData.team_id;
console.log(newData)
您可以从对象
中删除 属性
delete obj.team_id
我们一直在使用 lodash / underscore 来做这件事,所以它是
return _.omit(obj, 'team_id')
这样就可以在不修改原件的情况下得到想要的结果。
您可以使用 object destructuring 从对象中删除特定键
const venueWithTeamId = {
"id": 14,
"name": "Angel Stadium of Anaheim",
"opened": "1966-04-19T00:00:00.000Z",
"capacity": 45517,
"location": "Anaheim, California",
"team_id": "95cbbe2a",
"team": {
"id": "95cbbe2a",
"name": "Los Angeles Angels",
"established_in": 1961,
"league": "American League",
"division": "West Division",
"logo": "https://upload.wikimedia.org/wikipedia/commons/7/79/Los_Angeles_Angels_of_Anaheim_Insignia.svg",
"number_of_titles":1
}
};
const { team_id, ...withoutTeamId } = venueWithTeamId;
console.log(withoutTeamId);
我想从以下响应中删除密钥 team_id:
{
"id": 14,
"name": "Angel Stadium of Anaheim",
"opened": "1966-04-19T00:00:00.000Z",
"capacity": 45517,
"location": "Anaheim, California",
"team_id": "95cbbe2a",
"team": {
"id": "95cbbe2a",
"name": "Los Angeles Angels",
"established_in": 1961,
"league": "American League",
"division": "West Division",
"logo": "https://upload.wikimedia.org/wikipedia/commons/7/79/Los_Angeles_Angels_of_Anaheim_Insignia.svg",
"number_of_titles":1
}
}
我现在使用的代码从场地获取所有数据,起初我需要所有这些数据但在最后的响应中我想省略 team_id 键:
const venues = await connection(VENUE_TABLE)
.limit(LIMIT_PER_PAGE)
.offset((page - 1) * LIMIT_PER_PAGE)
.select('*')
.orderBy('name');
const venuesWithTeam = await venues.reduce(
(promise, element) =>
promise.then(async (result) =>
result.concat({
...element,
team: await connection('team')
.where('id', element.team_id)
.select('*')
.first(),
})
),
Promise.resolve([])
);
期望的行为是:
{
"id": 14,
"name": "Angel Stadium of Anaheim",
"opened": "1966-04-19T00:00:00.000Z",
"capacity": 45517,
"location": "Anaheim, California",
"team": {
"id": "95cbbe2a",
"name": "Los Angeles Angels",
"established_in": 1961,
"league": "American League",
"division": "West Division",
"logo": "https://upload.wikimedia.org/wikipedia/commons/7/79/Los_Angeles_Angels_of_Anaheim_Insignia.svg",
"number_of_titles":1
}
}
我该怎么做才能做到这一点?
使用Object.assign
从现有对象创建一个新对象,然后使用delete
删除键
let data = {
"id": 14,
"name": "Angel Stadium of Anaheim",
"opened": "1966-04-19T00:00:00.000Z",
"capacity": 45517,
"location": "Anaheim, California",
"team_id": "95cbbe2a",
"team": {
"id": "95cbbe2a",
"name": "Los Angeles Angels",
"established_in": 1961,
"league": "American League",
"division": "West Division",
"logo": "https://upload.wikimedia.org/wikipedia/commons/7/79/Los_Angeles_Angels_of_Anaheim_Insignia.svg",
"number_of_titles": 1
}
}
let newData = Object.assign({}, data);
delete newData.team_id;
console.log(newData)
您可以从对象
中删除 属性delete obj.team_id
我们一直在使用 lodash / underscore 来做这件事,所以它是
return _.omit(obj, 'team_id')
这样就可以在不修改原件的情况下得到想要的结果。
您可以使用 object destructuring 从对象中删除特定键
const venueWithTeamId = {
"id": 14,
"name": "Angel Stadium of Anaheim",
"opened": "1966-04-19T00:00:00.000Z",
"capacity": 45517,
"location": "Anaheim, California",
"team_id": "95cbbe2a",
"team": {
"id": "95cbbe2a",
"name": "Los Angeles Angels",
"established_in": 1961,
"league": "American League",
"division": "West Division",
"logo": "https://upload.wikimedia.org/wikipedia/commons/7/79/Los_Angeles_Angels_of_Anaheim_Insignia.svg",
"number_of_titles":1
}
};
const { team_id, ...withoutTeamId } = venueWithTeamId;
console.log(withoutTeamId);