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

简介: 随着 Javascript 越来越流行,使其应用的场景越来越多,不仅限于前端,可以是后端、混合应用程序、嵌入式设备等等,于是就有了大前端的叫法。现代前端开发有大量的框架和代码库来帮助实现各种复杂的需求,导致让很多人认为前端开发很简单,如切页面、组框架、网页制作等等。一个前端工程师如果需要提升技能,必然要经历原生代码的编写,代码片段可以加深对 Javascript 基础语法的理解,同时还能增加编码水平。

image.png

随着 Javascript 越来越流行,使其应用的场景越来越多,不仅限于前端,可以是后端、混合应用程序、嵌入式设备等等,于是就有了大前端的叫法。现代前端开发有大量的框架和代码库来帮助实现各种复杂的需求,导致让很多人认为前端开发很简单,如切页面、组框架、网页制作等等。一个前端工程师如果需要提升技能,必然要经历原生代码的编写,代码片段可以加深对 Javascript 基础语法的理解,同时还能增加编码水平。

1. localStorage

localStorage 是HTML5中的本地持久化存储方法之一,也是前端项目常用的本地存储方案之一。localStorage 存储的数据只要用户不去主动清除是永久存储的,存储的值只能是 string 类型,不能跨浏览器,不能跨域名访问,存储大小一般是 5M 左右。下面的代码片段是 localStorage 数据的存储、获取、清除。

const useStorage = (storageKey = "authorization") => {
    const localKey = `devpoint.local.${storageKey}`;
    const save = (data) => {
        window.localStorage.setItem(localKey, JSON.stringify(data));
    };
    const get = () => {
        const localData = window.localStorage.getItem(localKey);
        if (localData && localData !== "") {
            return JSON.parse(localData);
        } else {
            return false;
        }
    };
    /**
     * 清除localStorage
     */
    const clear = () => {
        window.localStorage.setItem(localKey, "");
    };
    return {
        save,
        get,
        clear,
    };
};
const storageAuth = useStorage();
const loginInfo = {
    username: "hballard",
    age: 30,
};
storageAuth.save(loginInfo);
console.log(storageAuth.get());

image.png 在浏览器中执行后,结果如下:

image.png

2. average

此代码片段返回两个或多个数值的平均值,此代码也展示了如何定义可变参数。

const average = (...nums) =>
    nums.reduce((acc, val) => acc + val, 0) / nums.length;
const ages = [30, 24, 28, 32];
console.log(average(...ages)); // 28.5
console.log(average(30, 24, 28, 32)); // 28.5

3. averageBy

此代码片段计算map数组按照指定 key 值的平均值,也可以给定一个迭代函数。

const averageBy = (array, fn) =>
    array
        .map(typeof fn === "function" ? fn : (val) => val[fn])
        .reduce((acc, val) => acc + val, 0) / array.length;
const users = [
    { name: "hballard", age: 30 },
    { name: "sguzman", age: 24 },
    { name: "jrowe", age: 28 },
    { name: "plowe", age: 32 },
];
const average1 = averageBy(users, (item) => item.age);
const average2 = averageBy(users, "age");
console.log(average1); // 28.5
console.log(average2); // 28.5

4. all

此代码片段是对集合元素进行验证,如果所有元素通过验证返回 true ,否则返回 false

const all = (array, fn) => array.every(fn);
const ages = [30, 24, 28, 32];
const result1 = all(ages, (item) => item < 40);
const result2 = all(ages, (item) => item > 30);
console.log(result1); // true
console.log(result2); // false

5. arrayToCSV

此代码片段将没有逗号或双引号的元素转换为具有逗号分隔符的字符串,即 csv 文件格式。

const arrayToCSV = (array, delimiter = ",") =>
    array
        .map((item) => item.map((value) => `"${value}"`).join(delimiter))
        .join("\n");
const users = [
    { name: "hballard", age: 30 },
    { name: "sguzman", age: 24 },
    { name: "jrowe", age: 28 },
    { name: "plowe", age: 32 },
];
const arrayUsers = users.map((item) => Object.values(item));
console.log(arrayUsers);
// [
//     [ 'hballard', 30 ],
//     [ 'sguzman', 24 ],
//     [ 'jrowe', 28 ],
//     [ 'plowe', 32 ]
//   ]
const strCsv1 = arrayToCSV(arrayUsers);
const strCsv2 = arrayToCSV(arrayUsers, ";");
console.log(strCsv1);
// "hballard","30"
// "sguzman","24"
// "jrowe","28"
// "plowe","32"
console.log(strCsv2);
// "hballard";"30"
// "sguzman";"24"
// "jrowe";"28"
// "plowe";"32"

6. arrayToHtmlList

此代码片段将数组元素转换为 <li> 标记 或者指定html标记,主要用于将数据转换为界面HTML格式。

const arrayToHtmlList = (array, tag = "li") =>
    array.map((item) => `<${tag}>${item}</${tag}>`).join("");
console.log(arrayToHtmlList(["第一条", "第二条"])); // <li>第一条</li><li>第二条</li>
console.log(arrayToHtmlList(["第一条", "第二条"], "p")); // <p>第一条</p><p>第二条</p>

7. allEqual

此代码片段判断一维数组的所有元素是否全相等。

const allEqual = (array) => array.every((val) => val === array[0]);
console.log(allEqual([1, 1, 1, "1"])); // false
console.log(allEqual([1, 1, 1, 2])); // false
console.log(allEqual([1, 1, 1, 1])); // true
console.log(allEqual(["a", "a", "a"])); // true

8. countOccurrences

此代码片段计算数组中某个值的重复次数。

const countOccurrences = (array, value) =>
    array.reduce(
        (accumulator, current) =>
            current === value ? accumulator + 1 : accumulator,
        0
    );
console.log(countOccurrences([..."chinese"], "e")); // 2
console.log(countOccurrences([1, 3, 3, 4, 3, 3, 2, 3], 3)); // 5

9. capitalizeWord

此代码片段将给定字符串中每个单词的首字母转为大写。

const capitalizeWord = (string) =>
    string.replace(/\b[a-z]/g, (char) => char.toUpperCase());
console.log(capitalizeWord("hello world in javascript")); // Hello World In Javascript

10. byteSize

此代码片段计算给定字符串的字节长度,此代码片段仅限高级浏览器中有效。

const byteSize = (string) => new Blob([string]).size;
console.log(byteSize("hello")); // 5
console.log(byteSize("中国")); // 6
相关文章
|
8天前
|
JavaScript 前端开发 Python
用python执行js代码:PyExecJS库
文章讲述了如何使用PyExecJS库在Python环境中执行JavaScript代码,并提供了安装指南和示例代码。
45 1
用python执行js代码:PyExecJS库
|
4天前
|
编解码 前端开发 JavaScript
javascript检测网页缩放演示代码
javascript检测网页缩放演示代码
|
6天前
|
Web App开发 JavaScript 前端开发
添加浮动按钮点击滚动到网页底部的纯JavaScript演示代码 IE9、11,Maxthon 1.6.7,Firefox30、31,360极速浏览器7.5.3.308下测试正常
添加浮动按钮点击滚动到网页底部的纯JavaScript演示代码 IE9、11,Maxthon 1.6.7,Firefox30、31,360极速浏览器7.5.3.308下测试正常
|
7天前
|
存储 JavaScript 前端开发
webSocket+Node+Js实现在线聊天(包含所有代码)
文章介绍了如何使用WebSocket、Node.js和JavaScript实现在线聊天功能,包括完整的前端和后端代码示例。
34 0
|
5天前
|
算法 JavaScript 前端开发
第一个算法项目 | JS实现并查集迷宫算法Demo学习
本文是关于使用JavaScript实现并查集迷宫算法的中国象棋demo的学习记录,包括项目运行方法、知识点梳理、代码赏析以及相关CSS样式表文件的介绍。
第一个算法项目 | JS实现并查集迷宫算法Demo学习
|
6天前
|
JavaScript 前端开发 API
紧跟月影大佬的步伐,一起来学习如何写好JS(上)
该文章跟随月影老师的指导,探讨了编写优质JavaScript代码的三大原则:各司其职、组件封装与过程抽象,通过具体示例讲解了如何在实际开发中应用这些原则以提高代码质量和可维护性。
紧跟月影大佬的步伐,一起来学习如何写好JS(上)
|
4天前
|
JavaScript 前端开发 Oracle
软件工程师,学习下JavaScript ES6新特性吧
软件工程师,学习下JavaScript ES6新特性吧
24 9
|
4天前
|
存储 JavaScript 前端开发
改进JavaScript代码,给水果有序赋色
改进JavaScript代码,给水果有序赋色
|
6天前
|
存储 JSON JavaScript
JavaScript帮我编写快递自动分拣的代码,区分省份市区县城乡镇
JavaScript帮我编写快递自动分拣的代码,区分省份市区县城乡镇在JavaScript中编写一个用于快递自动分拣的代码,区分省份、市区、县、城乡镇,通常意味着你需要一个数据结构来存储这些地理区域的信息,并编写逻辑来根据快递地址中的信息将其分配到正确的分类中。 这里,我将提供一个简化的示例,说明如何使用JavaScript对象和函数来实现这一功能。请注意,这个示例是高度简化的,并且假设你已经有了某种方式(如正则表达式或API调用)来从快递地址中提取省份、市区、县等信息。 ----------------------------------- ©著作权归作者所有:来自51CTO博客作者goS
|
7天前
|
JavaScript 前端开发 Python
python执行js代码
本文档详细介绍如何安装Node.js环境及PyExecJS库,并提供示例代码展示其功能。首先,通过指定链接安装Node.js,安装完毕后可在命令行中输入`node --version`来验证安装是否成功。接着,使用`pip install PyExecJS`安装PyExecJS库,该库允许Python程序执行JavaScript代码。文档还提供了多个示例代码,展示了如何在Python环境中执行和编译JavaScript代码,并可以选择特定的JavaScript运行时环境,如Node.js或JScript。最后,通过具体案例展示了PyExecJS的功能与使用方法。
14 3
下一篇
无影云桌面