Javascript 他们是否有更好的方法来设置重复的数组数据而不是使用数据[0]
重构代码和最佳性能的最佳方法是我在getData函数中所做的工作我使用async/await查询从Database获取数据然后我得到一些丑陋的数据我试图映射并删除复制数据的元素Javascript 他们是否有更好的方法来设置重复的数组数据而不是使用数据[0],javascript,node.js,async-await,Javascript,Node.js,Async Await,重构代码和最佳性能的最佳方法是我在getData函数中所做的工作我使用async/await查询从Database获取数据然后我得到一些丑陋的数据我试图映射并删除复制数据的元素 async getData({req,res}) { let data = await this.getData() data = [ { "id": 3, "employee_id": 2290, "getId": {
async getData({req,res}) {
let data = await this.getData()
data = [
{
"id": 3,
"employee_id": 2290,
"getId": {
"id": 9070
},
"getName": {
"name": "test"
},
},
{
"id": 4,
"employee_id": 2291,
"getId": {
"id": 9070
},
"getName": {
"name": "test"
},
}
] //example I await call database get data look like this
//before I remove them I want to keep duplicate data I set new variable for keep them
//which part is the most ugly is their anyway to do something about this ?
const getId = data[0].getId
const getName = data[0].getName
// in this part I map and delete element that duplicate which is data.getName and data.getId
// I create seperate function for code clean
data = await this.removeElement(data)
//after that I return response data
return response.status(200).json({
status: 200,
success: true,
getId: getId,
getName: getName,
data: data
});
}
async removeElement(data) {
// im not sure is their any beeter way to do something like this ?
return Promise.all(
data.map(async item => {
await delete item.getId;
await delete item.getName;
return item;
})
);
}
因此,我的输出响应如下所示:
getId : {
id : 9070
}
getName : {
name : 'test'
}
data : [
{
"id": 3,
"employee_id": 2290,
},
{
"id": 4,
"employee_id": 2291,
}
]
非常感谢您的帮助从对象中删除属性并不是一个异步过程。没有必要等待它,也没有必要做出承诺。所有这些都围绕着这样一个循环 要简洁地从数组的第一项中提取两个公共属性,可以对其进行分解:
const { getId, getName } = data[0];
速记属性名称也会有所帮助。全文:
const data = await this.getData();
const { getId, getName } = data[0];
const trimmedData = data.map(({ id, employee_id }) => ({ id, employee_id }));
return response.status(200).json({
status: 200,
success: true,
getId,
getName,
data: trimmedData
});
data.map({id,employee_id})=>({id,employee_id}))
获取数组并构造一个新的对象数组,该数组只包含原始对象中的id
和employee_id
属性
如果需要黑名单属性而不是提取所需的属性,则可以使用rest语法执行类似于上述的操作:
const trimmedData = data.map(({ getId, getName, ...rest }) => rest);
是他们的anyway-else而不是data.map({id,employee_id})=>({id,employee_id}));因为如果我使用map,我有10+个元素,它将像f data.map({id,employee_id,employee_id2,employee_id3,employee_id4,employee_id5})等等