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();
}