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

简介: 每天学习10个实用Javascript代码片段,加深对 Javascript 语法的理解,积累代码优化经验,第四天继续,如果觉得内容能够带来点帮助,可以查看专栏《碎片时间学习Javascript代码》其他内容,又或者有用到的需求片段,不妨在留言区留言。

每天学习10个实用Javascript代码片段,加深对 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 ]

一个严谨掘友评论没有去重,感谢,下面的代码增加去重机制。此方法不是求数组交集的最佳方式!

const intersection = (arrayA, arrayB) => [
    ...new Set(arrayA.filter((item) => arrayB.includes(item))),
];
const array1 = [1, 3, 5, 3, 3];
const array2 = [2, 4, 6, 3];
console.log(intersection(array1, array2)); // [ 3 ]

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

此代码片段返回一个数字数组的幂集,使用 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)); // 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");


相关文章
|
3月前
|
JavaScript 前端开发
JavaScript 中 this 的使用方法详解
JavaScript 中 this 的使用方法详解
45 1
|
JavaScript 前端开发 API
【译】15 个有用的 JavaScript 技巧
【译】15 个有用的 JavaScript 技巧
|
JavaScript 前端开发
10 个「有用」JavaScript 代码片段
10 个「有用」JavaScript 代码片段
|
存储 移动开发 前端开发
每天学习10个实用Javascript代码片段(一)
随着 Javascript 越来越流行,使其应用的场景越来越多,不仅限于前端,可以是后端、混合应用程序、嵌入式设备等等,于是就有了大前端的叫法。现代前端开发有大量的框架和代码库来帮助实现各种复杂的需求,导致让很多人认为前端开发很简单,如切页面、组框架、网页制作等等。一个前端工程师如果需要提升技能,必然要经历原生代码的编写,代码片段可以加深对 Javascript 基础语法的理解,同时还能增加编码水平。
117 0
每天学习10个实用Javascript代码片段(一)
|
JavaScript 前端开发 Java
优雅编程 | 18个JavaScript代码的小技巧
在多年的编程工作中,总会优先考虑编写代码的方式,不仅是为了使代码整洁,而且因为它有助于加快开发及协作效率,减少BUG的出现。
114 0
优雅编程 | 18个JavaScript代码的小技巧
|
存储 JavaScript 前端开发
JavaScript中实用的8个代码片段
JavaScript中实用的8个代码片段
JavaScript中实用的8个代码片段
|
JavaScript 前端开发 索引
每天学习 10 个实用JavaScript代码片段(七)
每天学习10个实用JavaScript代码片段,加深对 JavaScript 语法的理解,积累代码优化经验,新的内容来了,学习阅读代码是提高编码技能的最佳方式。如果觉得内容能够带来点帮助,可以查看专栏《碎片时间学习JavaScript代码》其他内容,又或者有用到的需求片段,不妨在留言区留言。
131 0
|
JavaScript 前端开发 数据安全/隐私保护
每天学习 10 个实用Javascript代码片段(六)
每天学习10个实用JavaScript代码片段,加深对 Javascript 语法的理解,积累代码优化经验,第六天来了,本文代码片段包括生成随机数、数字加密、四舍五入、文件扩展名、变量数字转换。如果觉得内容能够带来点帮助,可以查看专栏《碎片时间学习Javascript代码》其他内容,又或者有用到的需求片段,不妨在留言区留言。
117 0
|
JavaScript 前端开发 API
每天学习10个实用Javascript代码片段(五)
每天学习10个实用Javascript代码片段,加深对 Javascript 语法的理解,积累代码优化经验,第五天终于来了,如果觉得内容能够带来点帮助,可以查看专栏《碎片时间学习Javascript代码》其他内容,又或者有用到的需求片段,不妨在留言区留言。
108 0
|
JavaScript 前端开发 Go
每天学习10个实用Javascript代码片段(二)
每天学习10个实用Javascript代码片段,加深对 Javascript 语法的理解,积累代码优化经验,今天是第二部分,当然看完后还能继续查看过完的代码片段《每天学习10个实用Javascript代码片段(一)》。
99 0