CSS限制文本长度

单行文本

white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;

多行文本

overflow: hidden;
display: -webkit-box;
-webkit-line-clamp: 3;
-webkit-box-orient: vertical;

Array.prototype.some方法

Array.prototype.some 是 JavaScript 中数组的一个方法,它用于检测数组中是否至少有一个元素满足指定的条件(通过提供的函数)。

具体来说,Array.prototype.some 方法接受一个测试函数作为参数,并对数组中的每个元素执行该测试函数,如果任何一个元素使得测试函数返回 true,则 some 方法立即返回 true。如果所有元素都导致测试函数返回 false,则 some 方法返回 false。

例如:

const numbers = [1, 2, 3, 4, 5];

const isEven = (number) => number % 2 === 0;

const hasEvenNumber = numbers.some(isEven);

console.log(hasEvenNumber); // 输出 true

在这个例子中,numbers 是一个包含数字的数组,isEven 是一个测试函数,它检查一个数字是否是偶数。使用 some 方法,我们检查数组中是否至少有一个元素是偶数,因此 hasEvenNumber 将会是 true,因为数组中包含偶数元素。

总的来说,Array.prototype.some 是一个非常方便的方法,可以用于在数组中查找符合特定条件的元素,而不必遍历整个数组。

常用场景(将两次选择的对象合并):

confirmSelectShops(newShopArr) {
      newShopArr.forEach(newShop => {
        if (!this.selectedShopArr.some(oldShop => oldShop.id === newShop.id)) {
          this.selectedShopArr.push(newShop)
        }
      })
    }

mac重点关注目录

/usr/local/bin
/usr/local/Cellar
/usr/local/var
/usr/local/lib/ruby/gems/
/usr/local/var/homebrew/linked/
/Users/lixiang/Library
/Users/lixiang/Library/Application Support

mac环境变量记录

source ~/.bash_profile

# python3
export PATH=${PATH}:/usr/local/Cellar/python@3.11/3.11.6/bin
alias python="/usr/local/Cellar/python@3.11/3.11.6/bin/python3.11"
# python3 end

# flutter
export FLUTTER_GIT_URL=git@gitee.com:mirrors/Flutter.git
export PUB_HOSTED_URL=https://pub.flutter-io.cn
export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn
export PATH="$PATH:/Users/lixiang/Flutter/bin"
# flutter end

# pnpm
export PNPM_HOME="/Users/lixiang/Library/pnpm"
export PATH="$PNPM_HOME:$PATH"
# pnpm end

# nvm
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"
# nvm end

# 把所有的gem应用程序都加到系统环境变量路径
export PATH=/usr/local/lib/ruby/gems/3.1.0/bin:$PATH
# 把所有的gem应用程序都加到系统环境变量路径 end

JavaScript 中`forEach` 和 `map` 的区别

在 JavaScript 中,forEachmap 都是用于处理数组元素的方法,但它们有一些区别。

forEach 是一个数组方法,它接受一个回调函数作为参数,并对数组中的每个元素执行该回调函数。它没有返回值,仅用于遍历数组。示例代码如下:

const array = [1, 2, 3, 4];
array.forEach((element) => {
  console.log(element);
});

输出结果:

1
2
3
4

forEach 方法对数组中的每个元素都会执行一次回调函数,但它不会生成一个新的数组。

相比之下,map 方法也接受一个回调函数作为参数,但它会对数组中的每个元素都执行回调函数,并返回一个新的数组,该数组包含回调函数的返回值。示例代码如下:

const array = [1, 2, 3, 4];

const newArray = array.map((element) => {
  return element * 2;
});

console.log(newArray);

输出结果:

[2, 4, 6, 8]

在上面的例子中,map 方法将原始数组中的每个元素乘以 2,并返回一个新的数组 [2, 4, 6, 8]

因此,主要区别在于:

  • forEach 没有返回值,只用于遍历数组并执行回调函数。
  • map 返回一个新的数组,该数组包含了对原始数组中每个元素执行回调函数的结果。

根据具体的需求,选择使用 forEach 还是 map 取决于是否需要生成一个新的数组。如果只需要遍历数组并执行操作,而不需要生成新的数组,可以使用 forEach。如果希望对数组进行变换,并生成一个新的数组,可以使用 map

代码优化示例

// 这种写法不仅繁琐,而且会导致form中的input无法正常输入文字
async getPrinterScheme(info) {
      const { printerId, shopId, erpModel, id: useSceneId, isCloudPrinter } = info
      const { data } = await this.axios.post(`/printScheme/${printerId}/${shopId}/${erpModel}/${useSceneId}/${isCloudPrinter}/getPrinterScheme`)
      this.ruleForm = data.data || {}
      if (!this.ruleForm.printMachine) {
        this.ruleForm.printMachine = 0
      }
      if (!this.ruleForm.printNumber) {
        this.ruleForm.printNumber = 1
      }
      if (!this.ruleForm.leftPadding) {
        this.ruleForm.leftPadding = 0
      }
      if (!this.ruleForm.rightPadding) {
        this.ruleForm.rightPadding = 0
      }
      this.printMachine = this.ruleForm.printMachine
      if (!this.ruleForm.printSchemeMachineList) {
        this.ruleForm.printSchemeMachineList = []
      }
    },
    async getPrinterScheme(info) {
      const { printerId, shopId, erpModel, id: useSceneId, isCloudPrinter } = info
      const { data } = await this.axios.post(`/printScheme/${printerId}/${shopId}/${erpModel}/${useSceneId}/${isCloudPrinter}/getPrinterScheme`)
      const theData = data.data || {}
      const { printMachine = 0, printNumber = 1, leftPadding = 0, rightPadding = 0, printSchemeMachineList = [] } = theData
      this.ruleForm.printMachine = printMachine
      this.ruleForm.printNumber = printNumber
      this.ruleForm.leftPadding = leftPadding
      this.ruleForm.rightPadding = rightPadding
      this.ruleForm.printSchemeMachineList = printSchemeMachineList
    },

前端杂记

微信小程序云开发实现关键词搜索

if (keyword) {
    param.title = db.RegExp({
      regexp: event.keyword,
      options: 'i',
    })
  }

将鼠标光标改成小手形状(意指可点击)

style="cursor: pointer;"

created与mounted的区别

created //通常用于初始化某些属性值,例如data中的数据,然后再渲染成视图。
mounted //通常在初始化页面完成后,对html的dom节点进行需要的操作。

el-input中监听键盘事件“回车”

<el-input @keyup.enter.native="login()" "></el-input>

input监听回车键

<input @keyup.enter="login()" />

全局忽略eslint的报错

在项目根目录创建文件.eslintignore
内容为src,保存即可