【问题标题】: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

标签: javascript jquery arrays


【解决方案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
          });
      }
  });
}

【讨论】:

    猜你喜欢
    • 2019-06-18
    • 2019-08-20
    • 2023-04-07
    • 1970-01-01
    • 2016-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多