写点什么

每天学习 10 个实用 Javascript 代码片段(四)

用户头像
devpoint
关注
发布于: 2 小时前
每天学习10个实用Javascript代码片段(四)

每天学习 10 个实用 Javascript 代码片段,加深对 Javascript 语法的理解,积累代码优化经验,第天继续,如果觉得内容能够带来点帮助,可以查看主页所有文章,又或者有用到的需求片段,不妨在留言区留言。

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)); // 15console.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)); // 3console.log(average(1, 2, 3, 4, 5)); // 3
复制代码

5. powersetArray

此代码片段返回一个数字数组的幂集,使用 reducemapconcat 方法实现数组的组合方式。


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 个元素,使用扩展操作符()和数组的 sortslice 方法。如果不提供第二个参数,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)); // falseconsole.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");
复制代码


发布于: 2 小时前阅读数: 3
用户头像

devpoint

关注

细节的追求者 2011.11.12 加入

专注前端开发,用技术创造价值!

评论

发布
暂无评论
每天学习10个实用Javascript代码片段(四)