网站首页 > 技术文章 正文
1. intersection
此代码片段用于返回两个数组的交集,之前在文章《JavaScript中的Set数据操作:交集、差集、交集、对称差集》中介绍过使用 Set 获取两个集合的交集。
const intersection = (arrayA, arrayB) =>
arrayA.filter((item) => arrayB.includes(item));
const array1 = [1, 2, 3, 4];
const array2 = [3, 4, 5, 6];
console.log(intersection(array1, array2)); // [ 3, 4 ]
2. sum
此代码片段用于计算数组各元素的总和。
const sum = (...array) => [...array].reduce((acc, current) => acc + current, 0);
const testArray = [1, 2, 3, 4, 5];
console.log(sum(1, 2, 3, 4, 5)); // 15
console.log(sum(...testArray)); // 15
3. timeTaken
此代码片段用于计算执行函数所需的时间。
const timeTaken = (callback) => {
console.time("执行时间:");
const result = callback();
console.timeEnd("执行时间:");
return result;
};
timeTaken(() => Math.pow(10, 20)); // 执行时间:: 0.094ms
4. average
此代码片段使用扩展运算符 (...) 和数组中的 reduce 方法来返回两个给定数字或数组的平均值。
const average = (...numbers) =>
numbers.reduce((acc, current) => acc + current, 0) / numbers.length;
const testArray1 = [1, 2, 3, 4, 5];
console.log(average(...testArray1)); // 3
console.log(average(1, 2, 3, 4, 5)); // 3
5. powersetArray
此代码片段返回一个数字数组的幂集,使用 reduce、map 和 concat 方法实现数组的组合方式。
const powersetArray = (array) =>
array.reduce(
(acc, current) => acc.concat(acc.map((item) => [current].concat(item))),
[[]]
);
console.log(powersetArray([3, 4, 5]));
console.log(powersetArray([1, 2]));
/*
[
[], [ 3 ],
[ 4 ], [ 4, 3 ],
[ 5 ], [ 5, 3 ],
[ 5, 4 ], [ 5, 4, 3 ]
]
[ [], [ 1 ], [ 2 ], [ 2, 1 ] ]
*/
6. topElements
此代码片段按照从大到小返回数组的 top 个元素,使用扩展操作符(…)和数组的 sort 和 slice 方法。如果不提供第二个参数,number的默认值为1,默认只返回一个最大元素。
const topElements = (array, count = 1) =>
[...array].sort((a, b) => b - a).slice(0, count);
console.log(topElements([1, 2, 3, 4, 5, 6])); // [ 6 ]
console.log(topElements([1, 2, 30, 40, 30], 3)); // [ 40, 30, 30 ]
7. keyValuePairs
此代码片段使用 Object.keys 方法和 map 方法来映射 Object 的键,创建一个键值对数组。
const keyValuePairs = (object) =>
Object.keys(object).map((key) => [key, object[key]]);
console.log(keyValuePairs({ title: "DevPoint", city: "Shenzhen" })); // [ [ 'title', 'DevPoint' ], [ 'city', 'Shenzhen' ] ]
8. isPowerOf2
此代码片段判断一个数是否为 2 的幂次方,使用按位运算符 & 。
const isPowerOf2 = (number) => !!number && (number & (number - 1)) === 0;
console.log(isPowerOf2(100)); // false
console.log(isPowerOf2(64)); // true
9. bottomVisible
此代码片段检查页面底部是否可见。
const bottomVisible = () =>
document.documentElement.clientHeight + window.scrollY >=
(document.documentElement.scrollHeight ||
document.documentElement.clientHeight);
bottomVisible(); // true
10. createDir
此代码片段使用existsSync() 来检查目录是否存在,如果不存在则使用 mkdirSync() 创建它。主要用于NodeJs后端编程。
const fs = require("fs");
const createDir = (dir) =>
!fs.existsSync(dir) ? fs.mkdirSync(dir) : undefined;
createDir("cache");
猜你喜欢
- 2024-10-16 python数据类型(python数据类型bool)
- 2024-10-16 JavaScript Set、Map、WeakSet 和 WeakMap 的区别?
- 2024-10-16 69-1-10000遗漏了哪些序号#差集#Filter...
- 2024-10-16 进入Python的世界12-常用的程序例子整理二
- 2024-10-16 Java路径-35-Java的HashSet(java路径怎么找)
- 2024-10-16 Redis五种数据类型详解(redis7种数据类型)
- 2024-10-16 那些你不得不知的Redis基础类型常用操作、命令
- 2024-10-16 美团外卖iOS App冷启动治理(美团早启动)
- 2024-10-16 (Python)通过口诀记忆数组、集合、字典、元组
- 2024-10-16 【C++泛型编程】(二)标准模板库 STL
- 最近发表
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)