如何简化此更新函数数组代码?
Posted
技术标签:
【中文标题】如何简化此更新函数数组代码?【英文标题】:How do I simplify this update function array code? 【发布时间】:2021-11-18 21:33:30 【问题描述】:我有更新数组功能,如果可能的话,我想简化这段代码。
这个更新函数是关于更新和比较数组的值。
数据将在fruit_temp
内部进行比较
fruit_temp
fruit_db_id
的示例数据是和数据库中现有的id。
fruit_temp = [
fruit_db_id: 71,
fuit_id : 1,
name : 'papaya'
,
fruit_db_id: 73,
fuit_id : 3,
name : 'apple'
];
我将获取并读取fruit_temp 值,当它执行更新功能时,它将比较现有值和将插入的新值。这是此更新功能的解决方案。我只是想知道这段代码是否可以简化。
const updateFruit = () =>
finalFruit_temp = [];
let fruit = $('#fruit').val(); //getting fruit value
fruit = fruit.map(Number); //convert string value to integer
fruit.map((el) =>
let fruitData = fruit_temp.filter((e) => e.id === el)[0]; //return index if compare true
finalFruit_temp.push(
"fruit_db_id" :(fruitData == undefined) ? null : fruitData.fruit_db_id,
"fruit_id" :(fruitData == undefined) ? el : fruitData.id,
"status" :true
);
);
fruit_temp.map((el) =>
let checkedFruit= fruit.includes(el.id);
if(checkedFruit == false)
finalFruit_temp.push(
"fruit_db_id" :el.db_id,
"fruit_id" :el.id,
"status" :false
);
);
【问题讨论】:
据我所知,这里没有什么可以简化的。如果要减少,请删除空行上的 cmets 和换行符????。好吧,这个问题在这里没有必要。同样,删除箭头函数(el) =>
到 e =>
中仅 1 个参数的中断
不返回任何内容的Array.prototype.map()
应该是Array.prototype.forEach()
或(我的偏好)一个简单的for (const el of ...) ...
循环。
我只是想知道如果对象中没有id,为什么可以使用el.Id或e.id?我只看到一个fruit_id
【参考方案1】:
这段代码看起来很简单,但我看到你可以做一些事情来让它更短。在一行中定义变量并更改最后一个条件语句。
const updateFruit = () =>
finalFruit_temp = [];
let fruitData, fruit = $('#fruit').val().map(Number);
fruit.map((el) =>
fruitData = fruit_temp.filter((e) => e.id === el)[0];
finalFruit_temp.push(
"fruit_db_id" :(fruitData == undefined) ? null : fruitData.fruit_db_id,
"fruit_id" :(fruitData == undefined) ? el : fruitData.id,
"status" :true
);
);
fruit_temp.map((el) =>
if(!fruit.includes(el.id))
finalFruit_temp.push(
"fruit_db_id" :el.db_id,
"fruit_id" :el.id,
"status" :false
);
);
【讨论】:
以上是关于如何简化此更新函数数组代码?的主要内容,如果未能解决你的问题,请参考以下文章