遞歸獲取children數組的長度;查找數組對象的屬性是否有重複值;表格自定義順序;根據json數組屬性值排序、當前時間戳、轉樹數據、數組內相加

一、獲取children數組長度

        getMaxFloor (treeData) { //獲取樹長度
            let max = 0
            function each (data) {
                for(let i = 0;i<data.length;i++){
                    max++;
                    if(data[i].children){
                        each(data[i].children);
                    }
                }
            }
            each(treeData);
            return max
        },

二、查找數組對象的屬性是否有重複值

        attrOnly(array, attr){
            var first;
            if(array.length>0){
                for(let i=0;i<array.length;i++){
                    if(array[i][attr]!=""){
                        first = array[i][attr];
                    }
                }
                let num=0
                for(let i=0;i<array.length;i++){
                    if(array[i][attr]==first){
                        num+=1
                    }
                }
                if(num>1){
                    return true
                }else{
                    return false
                }
            }
        },

//使用
attrOnly("要檢測的數組","要查的對應的屬性名稱")
attrOnly(arr,"name")

arr=[{"name","張三"},{"age",20}]

三、elemenyui表格的自定義順序,原理字符串的剪切替換

        todown(index){//自定義順序
            if(this.maketableData[0].children.length<2){
                return;
            }
            let old_ = this.maketableData[0].children[index-1] //本行數據
            let new_ = this.maketableData[0].children[index] //下一行的數據
            let tableData_ = JSON.parse(JSON.stringify(this.maketableData));
            tableData_[0].children.splice(index,1,old_)
            tableData_[0].children.splice(index-1,1,new_)
            this.maketableData = tableData_;
        },
        toup(index){
            if(this.maketableData[0].children.length<2){
                return;
            }
            let old_ = this.maketableData[0].children[index-1] //本行數據
            let new_ = this.maketableData[0].children[index-2] //上一行的數據
            let tableData_ = JSON.parse(JSON.stringify(this.maketableData));
            tableData_[0].children.splice(index-2,1,old_)
            tableData_[0].children.splice(index-1,1,new_)
            this.maketableData = tableData_;
        },

四、根據json數組的屬性值排序

            creatCompare(propertyName) {
                return function (obj1,obj2) {
                    var value1=obj1[propertyName];
                    var value2=obj2[propertyName];
                    if(value1<value2){
                        return -1
                    }else if(value1>value2){
                        return 1
                    }else {
                        return 0
                    }
                }
            },

使用:

var data=[{name:"xiaoming",age:13,weight:20,},{name:"liming",age:23,weight:21},{name:"zhangming",age:8,weight:66}]
console.log(data.sort(creatCompare("age"))) 

五、獲取當前時間戳

let timestamp = Date.parse(new Date());
this.mouthvalue = this.base.format(new Date(timestamp),"yyyy-MM")

六、根據時間獲得時間戳

let endDateVal = 2019-07-12 09:02:01
new Date(endDateVal).getTime()

七、數組從大到小排列

arr.sort(function(a,b){
	    return a>b;
	    //return a<b;//可試試這種的結果。
})

八、取數組中,每個元素的重複次數

//取重複數
arr = arr.sort()//先排序
function reactnum(arr){
	let newArr = [];
    for (let i = 0; i < arr.length;) {
      let count = 0;
      for (let j = i; j < arr.length; j++) {
	        if (arr[i] == arr[j]) {
	        	count++;
	        }
      }
      newArr.push({
        'Number': arr[i],
        'count':count
      });
      i += count
    }
    return newArr
}

九、數組去重

function dedupe(array) {
  return Array.from(new Set(array));
}

var arr = dedupe(arr)

十、普通數據轉爲樹數據(遞歸)


var data = [{id:1,parentId:0,name:"一"},{id:2,parentId:1,name:"二"},{id:3,parentId:2,name:"三"},{id:4,parentId:0,name:"四"}] 
arrToTreeData(data,0)

function arrToTreeData(data, pId) {
  let arr = [];
  for (var i in data) {
    if (data[i].parentId == pId) {
      let item = data[i]
      item.children = arrToTreeData(data, data[i].id);
      arr.push(item);
    }
  }
  return arr;
}

十一、獲取前幾個月的時間

    getxData() {
      let timex = [];
      let newtime = new Date().getTime();
      let newyear = this.$base.format(new Date(newtime), "yyyy");
      let lastyear = newyear - 1;
      let yearx = [String(lastyear), newyear];
      let newmouth = this.$base.format(new Date(newtime), "MM");
      let mouthx = [];
      for (let i = 0; i < 5; i++) {
        let item = new Date().setMonth(new Date().getMonth() - (4 - i));
        mouthx.push(this.getMouth_(this.$base.format(new Date(item), "MM")));
      }
      let weekx = [];
      for (let i = 0; i < 5; i++) {
        let item = new Date().getTime() - 7 * (4 - i) * 3600 * 24 * 1000;
        weekx.push(
          this.getWeek_(this.$base.format(new Date(item), "yyyy-MM-dd"))
        );
      }
      let dayx = [];
      for (let i = 0; i < 7; i++) {
        let item = new Date().getTime() - (6 - i) * 3600 * 24 * 1000;
        dayx.push(this.$base.format(new Date(item), "MM.dd"));
      }
      timex = [...yearx, ...mouthx, ...weekx, ...dayx];
      return timex;
    },

十二、

//獲取後一天
let startTime = 2019-12-12
this.$base.format(new Date(new Date(startTime).getTime()+ 24 * 60 * 60 * 1000), "yyyy-MM-dd")+" 00:00:00"
// 2019-12-13 00:00:00

//獲取下一個月
let item = new Date().setMonth(new Date(startTime).getMonth() +1);
this.$base.format(new Date(item), "yyyy-MM")+"-01 00:00:00"
//2020-01-01 00:00:00

//獲取下一年
Number(this.$base.format(new Date(startTime), "yyyy")) +1;

十三、獲取當前月份的第一和最後一天

        var now = new Date();
        var month = now.getMonth() + 1;//js獲取到的是月份是 0-11 所以要加1
        var year = now.getFullYear();
        var nextMonthFirstDay = new Date([year,month + 1,1].join('-')).getTime();
        var oneDay = 1000 * 24 * 60 * 60;
        var monthLast = new Date(nextMonthFirstDay - oneDay).getDate()
        console.log([year,month,1].join('-'))  //2020-02-01
        console.log([year,month,monthLast].join('-')) //2020-02-29

十四、數組內數據相加

sumData(data){
            console.log("datadata",data)
            let num
            data.forEach(res=>{
                if(!isNaN(Number(res.value))){
                    if(!num){
                        num = Number(res.value) 
                    }else{
                        num+=Number(res.value) 
                    }
                }
            })
            if(!isNaN(Number(num))){
                num =Number(num).toFixed(2)
            }else{
                num ="-"
            }
            return num
        }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章