徜徉在知识海洋的一群鲸鱼
技术题目
技术题目

技术题目

给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。

解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。

JavaScript一行代码实现
return nums.reduce((total,num)=>total.concat(total.map(item.concat(num))),[[]])
对每个元素进行拼接,第一个concat的作用是把当前的total拼接上新的子集,map的作用是遍历total的子集,然后给当前子集拼接新的元素形成新的子集
空数组map之后的每个子元素concat新的元素变成新的数组,然后新的数组记录到二维数组里面,然后进行下一个num,下一个num会map[],[1],给这两个concat新的num,然后再添加到二维数组中

给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 '.' 和 '*' 的正则表达式匹配。

  • '.' 匹配任意单个字符
  • '*' 匹配零个或多个前面的那一个元素

所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。

https://leetcode.cn/problems/regular-expression-matching/solutions/296114/shou-hui-tu-jie-wo-tai-nan-liao-by-hyj8/
比较好的题解
有效IP
https://leetcode.cn/problems/restore-ip-addresses/

链式实现仿数据库查询操作

function query(data) {
定义结果
  let result = [...data];
  return {
    where(predicate) {
filter获取符合条件的结果
      result = result.filter(predicate);
      return this;
    },
    orderBy(key, desc = false) {
排序,基于desc进行升序或者降序排列
      result.sort((a, b) => {
        const aValue = a[key];
        const bValue = b[key];
        return desc ? bValue - aValue : aValue - bValue;
      });
      return this;
    },
分组
    groupBy(key) {
      const grouped = result.reduce((acc, obj) => {
        const value = obj[key];
        (acc[value] = acc[value] || []).push(obj);
        return acc;
      }, {});
最后结果
      result = Object.values(grouped);
      return this;
    },
    execute() {
      return result;
    },
  };
}

// 示例用法
const data = [
  { name: 'Alice', age: 25, score: 90 },
  { name: 'Bob', age: 30, score: 80 },
  { name: 'Charlie', age: 22, score: 95 },
  { name: 'David', age: 28, score: 85 },
];
const result = query(data)
  .where(item => item.age > 25)
  .orderBy('score', true)
  .groupBy('age')
  .execute();
console.log(result);

vue实现倒计时抢购

data是这些,看情况进行props切换
return {
      countdown: 10,
      title: "杭州市通用5元券",
      subtitle: "杭味面我的我读入你都三的那位我怕扽我的皮物品的看热闹使得从从而形成",
      buttonText: "抢购"
    };
mounted() {
    this.startCountdown();
  },调用倒计时
computed: {
进行多行文本省略
    formattedSubtitle() {
      if (this.subtitle.length <= 16) {
        return this.subtitle;
      }
      return this.subtitle.substring(0, 16) + "...";
    }
  },
methods: {
首先获取当前倒计时时间,每秒进行倒计时执行,如果是0的话直接显示抢购,
    startCountdown() {
      this.buttonText = `${this.countdown}s`;
      const timer = setInterval(() => {
        if (this.countdown > 0) {
          this.countdown--;
          this.buttonText = `${this.countdown}s`;
        } else {
          clearInterval(timer);
          this.buttonText = "抢购";
        }
      }, 1000);
    },
点击事件,如果可以抢购点击之后,经过请求后变成已抢购
    handleButtonClick() {
      if (this.buttonText === "抢购") {
        // 模拟异步请求
        setTimeout(() => {
          this.buttonText = "已抢购";
        }, 1000);
      }
    }
  }
关于样式的技巧,基本使用flex布局,如果是左右对齐,可以使用flex赋值让某些元素靠左或者靠右