# 引入
import {
flat,
flatten,
shuffle,
getAccCellWidth,
isListAllEqual,
getKeyValuesMap,
getPreviousRatio,
getMaxAndMinIdx,
flattenPreData,
compareTwoList
} from 't-comm';
// or
import {
flat,
flatten,
shuffle,
getAccCellWidth,
isListAllEqual,
getKeyValuesMap,
getPreviousRatio,
getMaxAndMinIdx,
flattenPreData,
compareTwoList
} from 't-comm/lib/base/list/index';
# flat(list)
描述:
递归拉平数组
参数:
参数名 | 描述 |
---|---|
list | 数组 |
返回:
数组
示例
flat([[[1, 2, 3], 4], 5])
// [1, 2, 3, 4, 5]
# flatten(list, key)
描述:
拉平数组,不会递归处理
参数:
参数名 | 类型 | 描述 |
---|---|---|
list | Array<Object> | 对象数组 |
key | string | 对象的key |
返回: object
拉平后的对象
示例
const list = [{id: 1, name: 'a'}, {id: 2, name: 'b'}]
flatten(list, 'id')
// {1: {id: 1, name: 'a'}, 2: {id: 2, name: 'b'}}
# shuffle(array)
描述:
打乱数组顺序
参数:
参数名 | 类型 | 描述 |
---|---|---|
array | Array<any> | 数组 |
返回: Array<any>
乱序后的数组
示例
shuffle([1, 2, 3, 4, 5])
// [3, 2, 1, 4, 5]
# getAccCellWidth(cellWidthList, idx)
描述:
获取累积宽度
参数:
参数名 | 类型 | 描述 |
---|---|---|
cellWidthList | Array<number> | 宽度列表 |
idx | number | 当前idx |
返回: number
累计宽度
示例
getAccCellWidth([20, 10, 20, 10], 1)
// 30
# isListAllEqual(list)
描述:
判断数组是否全部相等
参数:
参数名 | 类型 | 描述 |
---|---|---|
list | Array<(number|string)> | 数组 |
返回: Boolean
是否全部相等
示例
isListAllEqual([0, 0, 0])
// true
isListAllEqual([0, 0, 2])
// false
# getKeyValuesMap(data)
描述:
获取对象的value列表,并输出大对象形式
参数:
参数名 | 类型 |
---|---|
data | Array<any> |
返回: Object
处理后的对象
示例
const data = [
{
Project: 'x',
Request: 1,
Score: 'a'
},
{
Project: 'y',
Request: 2,
Score: 'b'
}]
getKeyValuesMap(data)
// 结果为:
{
Project: ['x', 'y'],
Request: [1, 2],
Score: ['a', 'b'],
}
// 也支持参数为带value属性的对象数组,如:
const data = [
{
Project: {
value: 'x'
}
},{
Project: {
value: 'y'
}
}]
// 结果为:
{
Project: ['x', 'y']
}
# getPreviousRatio(data, preDataMap, uniqKey)
描述:
获取相对上次的比例,会给输入的对象数组的每一项增加 ratio、previousValue 属性
参数:
参数名 | 类型 | 描述 |
---|---|---|
data | Array<Object> | 输入数据 |
preDataMap | Object | 上次数据的map |
uniqKey | string | 唯一键 |
示例
const data = [{
Project: { value: 'mj-match', name: 'Project' },
Request: {
value: 854,
name: 'Request',
idx: 19,
lastIdx: 19,
isMax: false,
isMin: false,
isSecondMax: false,
isSecondMin: true,
},
}];
const preDataMap = {
'mj-match': {
Project: 'mj-match',
Request: 4,
Score: 91.81,
FirstLoadTime: 178,
WholePageTime: 1035,
ParseDomTime: 484,
DNSLinkTime: 0,
DOMTime: 414,
TCP: 0,
HTTP: 275,
BackEnd: 60,
CGIFailNum: 0,
ErrorLogNum: 0,
CGIRequestNum: 83,
},
};
getPreviousRatio(data, preDataMap);
// data会变成:
[{
Project: { value: 'mj-match', name: 'Project' },
Request: {
value: 854,
name: 'Request',
idx: 19,
lastIdx: 19,
isMax: false,
isMin: false,
isSecondMax: false,
isSecondMin: true,
previousValue: 4, // 新增属性
ratio: "+999+%" // 新增属性
},
}];
# getMaxAndMinIdx(data, reverseScoreKeys)
描述:
给对象数组的每一项,添加isMax、isMin、、isSecondMax、isSecondMin、idx、lastIdx等属性
参数:
参数名 | 类型 | 描述 |
---|---|---|
data | Array<object> | 原始数据 |
reverseScoreKeys | Array<string> | 逆序的key列表 |
返回: Object
处理后的数据
示例
const data = [{
ProjectName: { name: 'ProjectName', value: '麻将赛事' },
PagePv: { name: 'PagePv', value: 2877 },
}, {
ProjectName: { name: 'ProjectName', value: '斗地主赛事' },
PagePv: { name: 'PagePv', value: 7 },
},
// ...
];
getMaxAndMinIdx(data, [])
// =>
[{
ProjectName: { name: 'ProjectName', value: '麻将赛事' },
PagePv: {
name: 'PagePv',
value: 2877,
idx: 6,
lastIdx: 6,
isMax: false,
isMin: false,
isSecondMax: false,
isSecondMin: false,
},
}];
# flattenPreData(preDataList, key)
描述:
拉平之前数据
参数:
参数名 | 类型 | 描述 |
---|---|---|
preDataList | Array<Object> | 之前的数据,作为对照 |
key | string | 主键 |
返回: Object
preDataMap
示例
const data = [{
ProjectName: { name: 'ProjectName', value: '研发平台' },
PagePv: { name: 'PagePv', value: 152 },
PageUv: { name: 'PageUv', value: 7 },
Score: { name: 'Score', value: 93.92 },
PageDuration: { name: 'PageDuration', value: 1281.58 },
PageError: { name: 'PageError', value: 2 },
}];
flattenPreData(data, 'ProjectName');
// 输出
{
研发平台: {
ProjectName: '研发平台',
PagePv: 152,
PageUv: 7,
Score: 93.92,
PageDuration: 1281.58,
PageError: 2,
},
};
# compareTwoList(list, preList, key)
描述:
对比两个对象列表
参数:
参数名 | 类型 | 描述 |
---|---|---|
list | Array<object> | 现在数据 |
preList | Array<object> | 参照数据 |
key | string | 唯一key名称 |
返回: Array<object>
对比结果,增加为list的每一项增加previousValue和ratio属性
示例
const list = [
{
ProjectName: { name: 'ProjectName', value: '脚手架' },
PagePv: { name: 'PagePv', value: 544343 },
PageUv: { name: 'PageUv', value: 225275 },
}
]
const preList = [
{
ProjectName: { name: 'ProjectName', value: '脚手架' },
PagePv: { name: 'PagePv', value: 123123 },
PageUv: { name: 'PageUv', value: 33333 },
}
]
compareTwoList(list, preList, 'ProjectName')
console.log(list)
[
{
ProjectName: { name: 'ProjectName', value: '脚手架' },
PagePv: {
name: 'PagePv',
value: 544343,
ratio: '+342.1%',
previousValue: 123123
},
PageUv: {
name: 'PageUv',
value: 225275,
ratio: '+575.8%',
previousValue: 33333
}
}
]