首页 > 解决方案 > 如何简化此更新函数数组代码?

问题描述

我有更新数组功能,如果可能的话,我想简化这段代码。这个更新函数是关于更新和比较数组的值。数据将在 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

                });
            }
        

        });
    }

标签: javascriptjqueryarrays

解决方案


这段代码看起来很简单,但我看到你可以做一些事情来让它更短。在一行中定义变量并更改最后一个条件语句。

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
          });
      }
  });
}

推荐阅读