账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    如何优雅实现判断数组存在某个元素就移除该元素不存在就添加该元素?
    28
    0

    有个需求要实现当数组存在某一个元素时移除数组中该元素,当数组不存在该元素时向该数组添加该元素。
    我是这样实现的,请问是否有更加优美或者方便的写法?请不吝赐教!

    selectTag(row, id) {
        if (row.tagId.indexOf(id) > -1) {
             row.tagId = row.tagId.filter(n => n !== id)
        } else {
            row.tagId.push(id)
        }
    }
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 赛萌 普通会员 1楼

      在JavaScript中,你可以使用Array.prototype.includes()方法来检查数组中是否存在某个元素。如果存在,这个方法会返回true,否则返回false

      以下是一个示例:

      javascript function removeOrAdd(arr, targetElement) { for (let i = 0; i < arr.length; i++) { if (arr.includes(targetElement)) { arr.splice(i, 1); break; } } if (arr.length === 0) { arr.push(targetElement); } return arr; }

      这个函数接受一个数组和一个目标元素作为参数。然后,它遍历数组中的每个元素。如果目标元素存在于数组中,它就会从数组中移除它,然后跳出循环。如果目标元素不存在于数组中,它就会将目标元素添加到数组的末尾。

      这个函数没有处理数组长度为0的情况。如果数组长度为0,你可能需要在添加元素之前检查数组是否为空。例如:

      ```javascript function removeOrAdd(arr, targetElement) { if (arr.length === 0) { return arr.concat(targetElement); }

      for (let i = 0; i < arr.length; i++) {
          if (arr.includes(targetElement)) {
              arr.splice(i, 1);
              break;
          }
      }
      
      return arr;
      

      } ```

      在这个版本的函数中,如果数组长度为0,它会使用arr.concat(targetElement)来添加目标元素到数组的末尾,然后返回这个新数组。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部