项目遇到的一些问题【持续更新中......】

一、数组

1. 去除数组对象中某一个属性

ini 复制代码
const arr = [
  { name: '张三', age: 20 },
  { name: '李四', age: 22 },
  { name: '王五', age: 25 }
];

const newArr = arr.map(({age, ...item}) => item);

console.log(newArr); // [{ name: '张三' }, { name: '李四' }, { name: '王五' }]

以上代码中,我们使用了ES6的解构语法,将对象中的age属性解构出来,并使用展开运算符将除了age属性之外的所有属性打包给item变量。接着,我们返回了一个仅包含item变量的新对象,这样就实现了去除原数组中每个对象的age属性的目的。

需要注意的是,以上代码使用了箭头函数和ES6语法,如果您的项目中不能使用这些特性,那么可以考虑使用普通函数和常规的循环语句来实现该功能。

2. 数组中按照某一个属性排序根据您提供的示例数组 body,根据 takeDate 字段降序排列的代码如下:

css 复制代码
const body = [  {      "id": "1",      "takeDate": 1647273600000,      "takeUserNo": "132",      "takeUserName": "王尔豪22",      "editFlag": 1  },  {      "id": "2",      "takeDate": 1695225600000,      "takeUserNo": "325",      "takeUserName": "张永敢22",      "editFlag": 1  }] 

const sortedBody = body.sort((a, b) => b.takeDate - a.takeDate);

在这个示例代码中,我们使用 Array.prototype.sort() 方法对 body 数组进行排序。比较函数 (a, b) => b.takeDate - a.takeDate 表示按照 takeDate 字段的降序排列。通过比较 b.takeDate - a.takeDate 的结果,可以得到降序排列的排序顺序。

排序后的结果将存储在 sortedBody 变量中。请注意,这并不会改变原始的 body 数组,而是返回一个新的已排序数组。您可以根据需要使用 sortedBody 进行后续的操作。

3. 类型判断函数---Object.prototype.toString.call

scss 复制代码
var type = function (o){
  var s = Object.prototype.toString.call(o);
  return s.match(/[object (.*?)]/)[1].toLowerCase();
};
Object.prototype.toString.call(2) // "[object Number]"
type({}); // "object"
type([]); // "array"
type(5); // "number"
type(null); // "null"
type(); // "undefined"
type(/abcd/); // "regex"
type(new Date()); // "date"

4. js arr2的数组按照arr1里面的数组排序

可以使用 Array.prototype.sort() 方法排序,传入一个比较函数,将 arr2 按照 arr1 中元素的顺序排序。具体实现如下:

scss 复制代码
const arr1 = [33, 11, 55, 22, 66]; 
const arr2 = [{age: 55}, {age: 22}, {age: 11}, {age: 66}, {age: 33}];

// 比较函数,返回根据 arr1 排序后,a 和 b 的顺序
function compare(a, b) {
  return arr1.indexOf(a.age) - arr1.indexOf(b.age);
}

// 排序
arr2.sort(compare);

console.log(arr2); // [{age: 33}, {age: 11}, {age: 55}, {age: 22}, {age: 66}]

使用 indexOf() 方法可以获得元素在数组中的索引,将两个元素根据它们出现在 arr1 中的位置进行比较,从而得到排序后的结果。

4.1. 公共函数
javascript 复制代码
  const ageArr = [33, 11, 55, 22, 66]; 
  const moneyArr = [5000, 3000, 6000, 2000, 9000]
  const objArr = [
      {age: 55, money: 6000},
      {age: 22, money: 3000},
      {age: 11, money: 2000},
      {age: 66, money: 9000},
      {age: 33, money: 5000}
  ]
  
// 1. 将sort排序函数抽离出来
   /**
    * @description 数组sort方法的 sortby(规定排序顺序)
    * @param {String} propName 属性名(数组排序基于的属性)
    * @param {Array} referArr 参照数组(objArr数组排序的参照数组)
    */
   const sortFunc = (propName, referArr) => {
     return (prev, next) => {
       return referArr.indexOf(prev[propName]) - referArr.indexOf(next[propName])
     }
   }
   
// 2. 排序objArr
   objArr.sort(sortFunc('age', ageArr))
   console.log('按age属性排序后的objArr\n', objArr)
   
   objArr.sort(sortFunc('money', moneyArr))
   console.log('按money属性排序后的objArr\n', objArr)

5. 刷新表单数据

kotlin 复制代码
// 将这个值赋给 this.form,实现了将 this.form 重置为初始值的效果。
this.form = this.$options.data().form; // 获取组件的初始数据对象

6. el-form表单校验(正则)

css 复制代码
formRules: {
  reimbursementLimit: [
    { required: true, message: '请输入报销比例', trigger: ['blur', 'change'] },
    // 正则校验输入小数
    { pattern: /^[0-9.]+$/, message: '请输入数字' },
  ],
  'secondMerchant.telephone': [
    { pattern: /^[0,1,2,3,4,5,6,7,8,9,-]{7,}$/, message: '电话格式错误', trigger: 'blur' },
  ],
  'secondMerchant.fax': [
    { pattern: /^[0,1,2,3,4,5,6,7,8,9,-]{7,}$/, message: '传真格式错误', trigger: 'blur' },
  ],
  email: [
    { pattern: /^[A-Za-z\d]+([-_.][A-Za-z\d]+)*@([A-Za-z\d]+[-.])+[A-Za-z\d]{2,4}$/, message: '邮箱格式不正确', trigger: 'blur' },
  ],
},

7. Git遇到的问题

7.1. git 本地设置全局名字
arduino 复制代码
git config --global user.name "Your Name"
7.2. git设置本地的用户名和密码
csharp 复制代码
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
请注意,--global 参数用于全局配置。这意味着这些设置将适用于你系统上的所有 Git 仓库。如果你只想在当前仓库中配置用户名和邮箱,可以不使用 --global 参数,而是进入该仓库的目录,然后在步骤2和步骤3中去掉 --global 参数即可。

8. vxe-table

8.1. 动态渲染表格可编辑
css 复制代码
{
  label: '业绩归属部门',
  align: 'center',
  headerAlign: 'center',
  children: [
    {
      tooltip: true,
      title: '部门名称',
      minWidth: '100px',
      field: 'unitName',
      slots: {
        default: ({ row }, h) => (
          <div class="product_list_cell">
            {(row.itemList || []).map(i => (
              <div>
                <span class={row.editFlag === 1 ? 'color-red' : ''}>
                  {i.unitName}
                </span>
              </div>
            ))}
          </div>
        ),
      },
    },
    {
      tooltip: true,
      title: '起始日期',
      minWidth: '100px',
      field: 'effectiveDate',
      slots: {
        default: ({ row }, h) => (
          // 把这里面的数据动态加载到dom
          <div class="product_list_cell">
            {(row.itemList || []).map(i => (
              <div>
                <span>
                  {this.$options.filters['date-format'](i.effectiveDate, 'YYYY-MM-DD') || '--'}
                </span>
              </div>
            ))}
          </div>
        ),
      },
    },
  ],
},

9. npm

arduino 复制代码
配置镜像:npm config set registry https://registry.npmmirror.com
查看是否更换成功:npm config get registry

执行安装命令:npm install
相关推荐
梦境之冢27 分钟前
axios 常见的content-type、responseType有哪些?
前端·javascript·http
racerun30 分钟前
vue VueResource & axios
前端·javascript·vue.js
J总裁的小芒果1 小时前
THREE.js 入门(六) 纹理、uv坐标
开发语言·javascript·uv
m0_548514771 小时前
前端Pako.js 压缩解压库 与 Java 的 zlib 压缩与解压 的互通实现
java·前端·javascript
AndrewPerfect1 小时前
xss csrf怎么预防?
前端·xss·csrf
Calm5501 小时前
Vue3:uv-upload图片上传
前端·vue.js
浮游本尊1 小时前
Nginx配置:如何在一个域名下运行两个网站
前端·javascript
m0_748239831 小时前
前端bug调试
前端·bug
m0_748232921 小时前
[项目][boost搜索引擎#4] cpp-httplib使用 log.hpp 前端 测试及总结
前端·搜索引擎
新中地GIS开发老师1 小时前
《Vue进阶教程》(12)ref的实现详细教程
前端·javascript·vue.js·arcgis·前端框架·地理信息科学·地信