Skip to content

Commit

Permalink
新增文件: 增加yd_array_filterBy函数
Browse files Browse the repository at this point in the history
  • Loading branch information
chenbimo committed Aug 29, 2024
1 parent 72a313f commit fe47fba
Show file tree
Hide file tree
Showing 5 changed files with 91 additions and 55 deletions.
16 changes: 16 additions & 0 deletions lib/array/filterBy.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
/**
* 数组按条件过滤
* @alias yd_array_filterBy
* @category array
* @param {Array} arrs 数组数据
* @param {Function} fn 比对函数
* @returns {object} 返回根据字段映射的对象
* @author 陈随易 <https://chensuiyi.me>
* @example yd_array_filterBy()
*/
export default (arrs, fn) => {
const result = arrs.filter((item) => {
return fn(item);
});
return result;
};
19 changes: 19 additions & 0 deletions lib/array/filterBy.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import { it, expect, describe } from 'vitest';
import yd_array_filterBy from './filterBy.js';

describe('yd_array_filterBy', () => {
it('应该返回 true', () => {
const arrs = [
{ type: 'food', value: 1 },
{ type: 'book', value: 2 },
{ type: 'book', value: 3 },
{ type: 'food', value: 4 },
{ type: 'book', value: 5 }
];
const result = yd_array_filterBy(arrs, (item) => item.type === 'food');
expect(result).toStrictEqual([
{ type: 'food', value: 1 },
{ type: 'food', value: 4 }
]);
});
});
5 changes: 3 additions & 2 deletions lib/crypto/md5.js
Original file line number Diff line number Diff line change
Expand Up @@ -245,13 +245,14 @@ function hexHMACMD5(k, d) {

/**
* 计算MD5值
* @author https://github.com/blueimp/JavaScript-MD5
* @alias yd_ctypto_md5
* @category crypto
* @alias yd_browser_md5
* @param {string} string 输入字符串
* @param {string} [key] HMAC key
* @param {boolean} [raw] Raw output switch
* @returns {string} 返回MD5值
* @author https://github.com/blueimp/JavaScript-MD5
* @example
*/
export default (string, key, raw) => {
if (!key) {
Expand Down
104 changes: 52 additions & 52 deletions lib/datetime/relativeTime.js
Original file line number Diff line number Diff line change
@@ -1,52 +1,52 @@
import { format, formatDistanceToNow } from 'date-fns';
import { zhCN } from 'date-fns/locale';
// 转换相对时间
const _convertTime = (obj) => {
try {
const item = {};
for (let key in obj) {
if (Object.prototype.hasOwnProperty.call(obj, key)) {
const value = obj[key];
if (key.endsWith('_at')) {
let key1 = key.replace('_at', '_at1');
let key2 = key.replace('_at', '_at2');
let dt = new Date(value);
if (value !== 0) {
item[key] = value;
item[key1] = format(dt, 'yyyy-MM-dd HH:mm:ss');
item[key2] = formatDistanceToNow(dt, { locale: zhCN, addSuffix: true });
} else {
item[key] = '';
}
} else {
item[key] = value;
}
}
}

return item;
} catch (err) {
console.log('🚀 ~ err:', err);
}
};

/**
* 转换相对时间
* @alias yd_datetime_relativeTime
* @category datetime
* @param {Array | object} data 数组或对象
* @returns {object} 返回转换后的相对时间
* @author 陈随易 <https://chensuiyi.me>
* @example
*/
export default (data) => {
// 如果是数组
if (Array.isArray(data)) {
return data.map((item) => {
return _convertTime(item);
});
}

// 如果是对象
return _convertTime(data);
};
import { format, formatDistanceToNow } from 'date-fns';
import { zhCN } from 'date-fns/locale';
// 转换相对时间
const _convertTime = (obj) => {
try {
const item = {};
for (let key in obj) {
if (Object.prototype.hasOwnProperty.call(obj, key)) {
const value = obj[key];
if (key.endsWith('_at')) {
let key1 = key.replace('_at', '_at1');
let key2 = key.replace('_at', '_at2');
let dt = new Date(value);
if (value !== 0) {
item[key] = value;
item[key1] = format(dt, 'yyyy-MM-dd HH:mm:ss');
item[key2] = formatDistanceToNow(dt, { locale: zhCN, addSuffix: true });
} else {
item[key] = '';
}
} else {
item[key] = value;
}
}
}

return item;
} catch (err) {
console.log('🚀 ~ err:', err);
}
};

/**
* 转换相对时间
* @alias yd_datetime_relativeTime
* @category datetime
* @param {Array | object} data 数组或对象
* @returns {object} 返回转换后的相对时间
* @author 陈随易 <https://chensuiyi.me>
* @example yd_datetime_relativeTime([])
*/
export default (data) => {
// 如果是数组
if (Array.isArray(data)) {
return data.map((item) => {
return _convertTime(item);
});
}

// 如果是对象
return _convertTime(data);
};
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "yidash",
"type": "module",
"version": "1.7.0",
"version": "1.7.1",
"private": false,
"license": "MIT",
"description": "yidash(易大师)一万个JavaScript实用方法库",
Expand Down

0 comments on commit fe47fba

Please sign in to comment.