javascript - 如何简化此更新函数数组代码?
问题描述
我有更新数组功能,如果可能的话,我想简化这段代码。这个更新函数是关于更新和比较数组的值。数据将在 is 的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
});
}
});
}
解决方案
这段代码看起来很简单,但我看到你可以做一些事情来让它更短。在一行中定义变量并更改最后一个条件语句。
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
});
}
});
}