Skip to content

Commit

Permalink
完善功能: 完善功能
Browse files Browse the repository at this point in the history
  • Loading branch information
chenbimo committed Aug 1, 2024
1 parent 3bf56c1 commit abf486f
Show file tree
Hide file tree
Showing 20 changed files with 160 additions and 101 deletions.
13 changes: 1 addition & 12 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ console.log(validNumber('1.2.')); // 1.20

`lib` 目录下,每一个目录是一个函数类型集合。

每个目录下,不能再创建目录,只能创建函数文件。
每个目录下,不能再创建目录,只能创建函数文件。

函数名称尽量简短且清楚地表达函数的作用。

Expand Down Expand Up @@ -129,14 +129,3 @@ console.log(validNumber('1.2.')); // 1.20

1. 每个注册用户可以免费领取一个永久注册码(登录自动领取)。
2. 每个贡献者可以额外领取一个(私聊我即可)。

### 贡献者

<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
<!-- prettier-ignore-start -->
<!-- markdownlint-disable -->

<!-- markdownlint-restore -->
<!-- prettier-ignore-end -->

<!-- ALL-CONTRIBUTORS-LIST:END -->
17 changes: 15 additions & 2 deletions lib/array/countOccurrences.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,26 @@
* 统计数组中各项出现的次数
* @author 橙某人 <https://github.com/ydydydq>
* @category 数组
* @alias yd_array_countOccurrences
* @param {Array} array 任意一维数组
* @returns {Object} 返回以每项为key,次数为value的对象
* @returns {object} 返回以每项为key,次数为value的对象
*
* @example
* console.log(yd_array_countOccurrences([1, 1, 2, 3, 3, 4, 4, 4])); // {1: 2, 2: 1, 3: 2, 4: 3}
*
* @example
* console.log(yd_array_countOccurrences(['a', 'a', 'bb', 'abc', 'fff', 'fff', '橙', '橙'])); // {a: 2, bb: 1, abc: 1, fff: 2, 橙: 2}
*/
export default (arr) => arr.reduce((prev, curr) => ((prev[curr] = ++prev[curr] || 1), prev), {});
export default (array) => {
const occurrences = {};
for (let i = 0; i < array.length; i++) {
const element = array[i];
if (occurrences[element]) {
occurrences[element]++;
}
else {
occurrences[element] = 1;
}
}
return occurrences;
};
1 change: 1 addition & 0 deletions lib/array/diffBoth.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
* 数组的差集
* @author 陈随易 <https://chensuiyi.me>
* @category 数组
* @alias yd_array_diffBoth
* @param {Array} arr1 数组1
* @param {Array} arr2 数组2
* @returns Array 数组的差集
Expand Down
5 changes: 3 additions & 2 deletions lib/array/diffFirst.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,15 @@
* 取第一个数组的差集
* @author 陈随易 <https://chensuiyi.me>
* @category 数组
* @alias yd_array_diffFirst
* @param {Array} arr1 数组1
* @param {Array} arr2 数组2
* @returns {Array} 返回第一个数组中跟第二个数组不同的值
*/
export default (arr1, arr2) => {
const set1 = new Set(arr1);
const set2 = new Set(arr2);
const uniqueElements = new Set([...set1].filter((x) => !set2.has(x)));
const uniqueElements = new Set([...set1].filter(x => !set2.has(x)));

return Array.from(uniqueElements);
};
}
11 changes: 6 additions & 5 deletions lib/array/findIndex.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,17 @@
* 查找数组中匹配的索引
* @author 陈随易 <https://chensuiyi.me>
* @category 数组
* @alias yd_array_findIndex
* @param {Array} array 数组
* @param {String} field 要查找的字段
* @param {String} value 该字段的值
* @returns {Number} 返回匹配的索引
* @param {string} field 要查找的字段
* @param {string} value 该字段的值
* @returns {number} 返回匹配的索引
*/
export default (array, field, value) => {
let result = null;
for (const [index, item] of array.entries()) {
for (let prop in item) {
if (item.hasOwnProperty(prop)) {
for (const prop in item) {
if (Object.prototype.hasOwnProperty.call(item, prop)) {
if (prop === field && item[prop] === value) {
result = index;
break;
Expand Down
15 changes: 8 additions & 7 deletions lib/array/findObj.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,17 @@
* 查找数组中匹配的值
* @author 陈随易 <https://chensuiyi.me>
* @category 数组
* @param {Array} array 数组对象
* @param {String} field 要查找的属性
* @alias yd_array_findObj
* @param {Array} arrObj 数组对象
* @param {string} field 要查找的属性
* @param {Any} value 属性的值
* @returns {Object} 返回匹配的对象
* @returns {object} 返回匹配的对象
*/
export default (array, field, value) => {
export default (arrObj, field, value) => {
let result = {};
for (let item of array) {
for (let prop in item) {
if (item.hasOwnProperty(prop)) {
for (const item of arrObj) {
for (const prop in item) {
if (Object.prototype.hasOwnProperty.call(item, prop)) {
if (prop === field && item[prop] === value) {
result = item;
break;
Expand Down
14 changes: 8 additions & 6 deletions lib/array/flatten.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,22 +2,24 @@
* 将多维数组拍平为一维数组
* @author WZBBiao <https://github.com/WZBbiao>
* @category 数组
* @param {Array} array - 需要拍平的数组
* @alias yd_array_flatten
* @param {Array} arr - 需要拍平的数组
* @returns {Array} - 拍平后的数组
* @example
* console.log(yd_array_flatten([1, [2, [3, [4]], 5]])); // [1, 2, 3, 4, 5]
*/
export default (array) => {
export default (arr) => {
const result = [];
const flatten = (arr) => {
arr.forEach((item) => {
if (Array.isArray(item)) {
flatten(item);
} else {
}
else {
result.push(item);
}
});
};
flatten(array);
}
flatten(arr);
return result;
};
}
8 changes: 5 additions & 3 deletions lib/array/groupBy.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,10 @@
* 数组数据分组
* @author 陈随易 <https://chensuiyi.me>
* @category 数组
* @alias yd_array_groupBy
* @param {Array} array 数组
* @param {String | Function} key 分组的字段或函数
* @returns {Object} 返回按某字段或函数分组后的对象
* @param {string | Function} key 分组的字段或函数
* @returns {object} 返回按某字段或函数分组后的对象
*/
export default (array, key) => {
const result = new Map();
Expand All @@ -13,7 +14,8 @@ export default (array, key) => {

if (typeof key === 'string') {
groupKey = item[key];
} else if (typeof key === 'function') {
}
else if (typeof key === 'function') {
groupKey = key(item);
}

Expand Down
7 changes: 4 additions & 3 deletions lib/array/keyBy.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,15 @@
* 数组按key排序
* @author 陈随易 <https://chensuiyi.me>
* @category 数组
* @alias yd_array_keyBy
* @param {Array} array 数组
* @param {String} field 映射字段
* @returns {Object} 返回根据字段映射的对象
* @param {string} field 映射字段
* @returns {object} 返回根据字段映射的对象
*/
export default (array, field) => {
const result = {};
array.forEach((item) => {
result[item[field]] = item;
});
})
return result;
};
3 changes: 2 additions & 1 deletion lib/array/paging.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,13 @@
* 对数组进行分页
* @author XiaoXinYo
* @category 数组
* @alias yd_array_paging
* @param {Array} array 数组
* @param {number} page_size 每页数量
* @returns {Array} 返回已分好的数组
*/
export default (array, page_size) => {
let result = [];
const result = []
for (let i = 0; i < array.length; i += page_size) {
result.push(array.slice(i, i + page_size));
}
Expand Down
1 change: 1 addition & 0 deletions lib/array/shuffle.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
* 数组随机排序(俗称洗牌)
* @author 生命过客 <739694218@qq.com>
* @category 数组
* @alias yd_array_shuffle
* @param {Array} array 数组
* @returns {Array} 返回随机排序后的数组
*/
Expand Down
37 changes: 22 additions & 15 deletions lib/array/sortBy.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// >>> HELPERS <<<

const castComparer = (comparer) => (a, b, order) => comparer(a, b, order) * order;
const castComparer = comparer => (a, b, order) => comparer(a, b, order) * order;

const unpackObjectSorter = function (sortByObj) {
const { asc, desc } = sortByObj || {};
Expand All @@ -22,10 +22,12 @@ const multiPropertySorterProvider = function (defaultComparer) {
if (typeof sortBy === 'string') {
valA = a[sortBy];
valB = b[sortBy];
} else if (typeof sortBy === 'function') {
}
else if (typeof sortBy === 'function') {
valA = sortBy(a);
valB = sortBy(b);
} else {
}
else {
const objectSorterConfig = unpackObjectSorter(sortBy);
return multiPropertySorter(objectSorterConfig.sortBy, sortByArr, depth, objectSorterConfig.order, objectSorterConfig.comparer || defaultComparer, a, b);
}
Expand All @@ -38,7 +40,7 @@ const multiPropertySorterProvider = function (defaultComparer) {

return equality;
};
};
}

function getSortStrategy(sortBy, comparer, order) {
// Flat array sorter
Expand Down Expand Up @@ -95,29 +97,34 @@ function createNewSortInstance(opts) {
},
by(sortBy) {
return sortArray(1, arrayToSort.slice(), sortBy, comparer);
}
};
},
}
};
}

const defaultComparer = (a, b, order) => {
if (a == null) return order;
if (b == null) return -order;
function defaultComparer(a, b, order) {
if (a == null)
return order;
if (b == null)
return -order;

if (typeof a !== typeof b) {
if (typeof a < typeof b) {
return -1;
} else {
}
else {
return 1;
}
}

if (a < b) return -1;
if (a > b) return 1;
if (a < b)
return -1;
if (a > b)
return 1;

return 0;
};
}

export default createNewSortInstance({
comparer: defaultComparer
});
comparer: defaultComparer,
})
11 changes: 6 additions & 5 deletions lib/array/sumBy.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,15 @@
* 数组求和
* @author 陈随易 <https://chensuiyi.me>
* @category 数组
* @param {Array} array 数组数据
* @alias yd_array_sumBy
* @param {Array} arr 数组数据
* @param {Function} iteratee 迭代函数
* @returns {Number} 返回求和值
* @returns {number} 返回求和值
*/
export default (array, iteratee) => {
export default (arr, iteratee) => {
let sum = 0;
for (let i = 0; i < array.length; i++) {
sum += iteratee(array[i]);
for (let i = 0; i < arr.length; i++) {
sum += iteratee(arr[i]);
}
return sum;
};
1 change: 1 addition & 0 deletions lib/array/uniqWith.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
* 数组去重
* @author 陈随易 <https://chensuiyi.me>
* @category 数组
* @alias yd_array_uniqWith
* @param {Array} array 数组数据
* @param {Function} comparator 比较函数
* @returns {Array} 返回比较函数去重后的数组
Expand Down
1 change: 1 addition & 0 deletions lib/array/unique.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
* 数组去重
* @author 陈随易 <https://chensuiyi.me>
* @category 数组
* @alias yd_array_unique
* @param {Array} array 数组数据
* @returns {Array} 返回去重后的数组
*/
Expand Down
24 changes: 15 additions & 9 deletions lib/browser/exitFullScreen.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,21 @@
* 退出网页全屏
* @author 陈随易 <https://chensuiyi.me>
* @category 浏览器
* @alias yd_browser_exitFullScreen
*/
export default () => {
if (document.exitFullscreen) {
document.exitFullscreen();
} else if (document.msExitFullscreen) {
document.msExitFullscreen();
} else if (document.mozCancelFullScreen) {
document.mozCancelFullScreen();
} else if (document.webkitExitFullscreen) {
document.webkitExitFullscreen();
if (document.fullscreenElement || document.webkitFullscreenElement) {
if (document.exitFullscreen) {
document.exitFullscreen();
}
else if (document.msExitFullscreen) {
document.msExitFullscreen();
}
else if (document.mozCancelFullScreen) {
document.mozCancelFullScreen();
}
else if (document.webkitExitFullscreen) {
document.webkitExitFullscreen();
}
}
};
}
12 changes: 8 additions & 4 deletions lib/browser/openFullscreen.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,20 @@
* 开启网页全屏
* @author 陈随易 <https://chensuiyi.me>
* @category 浏览器
* @param {String} element 元素
* @alias yd_browser_exitFullScreen
* @param {string} element 元素
*/
export default (element) => {
if (element.requestFullscreen) {
element.requestFullscreen();
} else if (element.mozRequestFullScreen) {
}
else if (element.mozRequestFullScreen) {
element.mozRequestFullScreen();
} else if (element.msRequestFullscreen) {
}
else if (element.msRequestFullscreen) {
element.msRequestFullscreen();
} else if (element.webkitRequestFullscreen) {
}
else if (element.webkitRequestFullscreen) {
element.webkitRequestFullScreen();
}
};
Loading

0 comments on commit abf486f

Please sign in to comment.