常用篩檢程式代碼

OneNET View 2.0 提供了篩檢程式來對數據來源進行個性化處理,用戶可以自行寫入JavaScript代碼,實現數據结构转换筛选和一些简单的计算。本文將列舉一些常用的篩檢程式代碼供參考。如您在實際使用過程中遇到困難,請在視覺化產品交流群中向我們提問。

反覆運算處理

通常數據來源返回的結果大多是陣列類型,通過反覆運算可以對每個元素進行處理。

data.forEach((item, index) => {
  // console.log('元素:', item, ';下標:', index);
});

獲取陣列第一項

// first([1, 2]); // -> 1
function first(arr) {
  var len = arr ? arr.length : 0;
  if (len) return arr[0];
}

獲取陣列最後一項

// last([1, 2]); // -> 2
function last(arr) {
  var len = arr ? arr.length : 0;
  if (len) return arr[len - 1];
}

陣列最大值,最小值

//陣列最大值
function maxArr(arr) {
  return Math.max.apply(null, arr);
}
//陣列最小值
function minArr(arr) {
  return Math.min.apply(null, arr);
}

陣列求和,平均值

// 這一塊的封裝,主要是針對數位類型的陣列
// 求和
function sumArr(arr) {
  return arr.reduce(function(pre, cur) {
    return pre + cur;
  });
}
// 陣列平均值,小數點可能會有很多位,這裡不做處理
function covArr(arr) {
  return this.sumArr(arr) / arr.length;
}

從陣列中隨機獲取元素

function randomOne(arr) {
  return arr[Math.floor(Math.random() * arr.length)];
}

隨機返回一個範圍的數字

//ecDo.randomNumber(5,10)
//返回5-10的隨機整數,包括5,10
//ecDo.randomNumber(10)
//返回0-10的隨機整數,包括0,10
//ecDo.randomNumber()
//返回0-255的隨機整數,包括0,255
function randomNumber(n1, n2) {
  if (arguments.length === 2) {
    return Math.round(n1 + Math.random() * (n2 - n1));
  } else if (arguments.length === 1) {
    return Math.round(Math.random() * n1);
  } else {
    return Math.round(Math.random() * 255);
  }
}

時間格式處理

/**
 * @param timestamp 時間戳記
 **/
function formatDate(timestamp) {
  var date = new Date(timestamp); //時間戳記為10位需*1000,時間戳記為13位的話不需乘1000
  var Y = date.getFullYear() + '-';
  var M =
    (date.getMonth() + 1 < 10
      ? '0' + (date.getMonth() + 1)
      : date.getMonth() + 1) + '-';
  var D = (date.getDate() < 10 ? '0' + date.getDate() : date.getDate()) + ' ';
  var h =
    (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':';
  var m =
    (date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()) +
    ':';
  var s = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds();
  return Y + M + D + h + m + s;
}

返回陣列(字串)一個元素出現的次數

//ecDo.getEleCount('asd56+asdasdwqe','a')
//result:3
//ecDo.getEleCount([1,2,3,4,5,66,77,22,55,22],22)
//result:2
function getEleCount(obj, ele) {
  var num = 0;
  for (var i = 0, len = obj.length; i < len; i++) {
    if (ele === obj[i]) {
      num++;
    }
  }
  return num;
}

对象数组排序

//var arr=[{a:1,b:2,c:9},{a:2,b:3,c:5},{a:5,b:9},{a:4,b:2,c:5},{a:4,b:5,c:7}]
//ecDo.arraySort(arr,'a,b')a是第一排序條件,b是第二排序條件
//result:[{"a":1,"b":2,"c":9},{"a":2,"b":3,"c":5},{"a":4,"b":2,"c":5},{"a":4,"b":5,"c":7},{"a":5,"b":9}]
function arraySort(arr, sortText) {
  if (!sortText) {
    return arr;
  }
  var _sortText = sortText.split(',').reverse(),
    _arr = arr.slice(0);
  for (var i = 0, len = _sortText.length; i < len; i++) {
    _arr.sort(function(n1, n2) {
      return n1[_sortText[i]] - n2[_sortText[i]];
    });
  }
  return _arr;
}

陣列逆序

// arrayReverse([3,2,1,4])  // [4, 1, 2, 3]
function arrayReverse(arr) {
  var len = arr ? arr.length : 0;
  if (len) return arr.reverse();
}

个搜索结果,搜索内容 “

    0 个搜索结果,搜索内容 “