【JS】常用js方法

1、判断是否是数组、字符串等方法

a instanceof b

a是你需要判断的数据

b是判断的类型

//直接判断原型
var a = [1,5,8]
var b = '123456'

console.log(a instanceof Array)//true
console.log(a instanceof String)//false

console.log(b instanceof String)//true

2、分割字符串

a.split(str,num)

a就是需要分割的字符串

str是分隔符,默认是空

num分割的次数

var a ='api/Getuser'
var b = a.split("/");

console.log(b)//['api','Getuser']

3、替换指定字符串

a.replace(old,new)

a就是所替换的字符串所在

old是需要替换的字符串(旧字符串)

new替换成的字符串(新字符串)

var a ='{
    
    {url}}/api/GetList'
var b = a.split('/')//先分割字符串
console.log(b) //['{
    
    {url}}','api','GetList']

//第一种方法--变量
var c = a.replace(b[0],'http://198.4.100:8090');
//第二种--字符串
var c = a.replace(/{
    
    {url}}/,'http://198.4.100:8090');

console.log(c) //'http://198.4.100:8090/api/GetList'

4、数组排序

在表格中进行多选,多选后的数据顺序是根据自己选择的顺序进行排序的。我的需求是把多选后的数据根据id从小到大进行重新排序。

get () {
      this.numbers = [
        { id: 1, zu: '王小虎1', state: 1, },
        { id: 4, zu: '王小虎2', state: 1 },
        { id: 3, zu: '王小虎3', state: 1 },
        { id: 2, zu: '王小虎4', state: 1 },
      ]
 
      var compare = function (prop) {
        return function (obj1, obj2) {
          var val1 = obj1[prop];
          var val2 = obj2[prop];
          if (!isNaN(Number(val1)) && !isNaN(Number(val2))) {
            val1 = Number(val1);
            val2 = Number(val2);
          }
          if (val1 < val2) {
            return -1;
          } else if (val1 > val2) {
            return 1;
          } else {
            return 0;
          }
        }
      }
      this.numbers.sort(compare('id'))
      console.log(this.numbers.sort(compare('id')));
    }

根据name进行排序(字符串),则是按照abc顺序排序

get () {
      var arr = [{ name: "zlw", age: 24 }, { name: "wlz", age: 25 }];
      var compare = function (obj1, obj2) {
        var val1 = obj1.name;
        var val2 = obj2.name;
        if (val1 < val2) {
          return -1;
        } else if (val1 > val2) {
          return 1;
        } else {
          return 0;
        }
      }
      console.log(arr.sort(compare));
    }

5、中文文字均等换行,也就是上下文字尽量一致

文字均等换行的意思就是,如果有10个字就上下显示5个字展示,8个字就上下4个字展示,尽量让两行文字显示相同

我使用的是先获取字符串的长度,然后除以2,看是否除得尽,除得尽就在哪换行,除不尽则加1然后换行

huanhang(_str) {
                var str = _str,
                    result = "";
                // 判断字符串长度多少后除以2,除后有小数点就加1换行,没有则直接换行
                var rep = /[\.]/;
                if (str.length > 5) {//低于5个字就不换行
                    let a = (str.length / 2)
                    if (rep.test(a)) {
                        var n = parseInt(str.length / 2) + 1; //指定第n位换行
                    } else {
                        var n = parseInt(str.length / 2); //指定第n位换行
                    }
                    for (var i = 0, len = str.length; i < len; i++) {
                        result += str[i];
                        if ((i + 1) % n == 0)
                            result += "\r\n";
                    }
                    return result;
                } else {
                    return str
                }
            },

使用:

<text>{
    
    {huanhang(SceneData.Title1)}}</text>

6、根据字符串中的符号进行换行

字符串:‘检测项目1;检测项目2’
注意:一定要用v-html
<div v-html="jcbz.replace(/\;/g, '<br />')">

7、除去数组对象重复字符串

修改成这样

接口返回类型如下,最后一级不返children,只返fileName和id,其余反children和fileName

getne(item) {
      item.map((i, index) => {
        if (i.children && i.children.length > 0) {
          i.children.forEach((j, ind) => {
            if (j.fileName.indexOf(i.fileName) !== -1) {
              const a = j.fileName.split(i.fileName);
              if (a[0] === "") {
                // 第一次
                j.fileName = j.fileName.replace(i.fileName, "");
              } else {
                // 剩余次数
                j.fileName = a[a.length - 1];
              }
              this.getne(i.children);
            }
          });
        }
      });
    },
//接口调用
 async getFileAllList(item) {
      // const res = await getFileAllList({ FilePath: "" });//查看全部文件
      const res = await getFileAllList({
        FilePath: item["文件路径"],
      });
      this.getne(res.data);
      this.treeData = res.data;
    },

猜你喜欢

转载自blog.csdn.net/Qxn530/article/details/129561345