每天学习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
相关文章
|
1月前
|
Web App开发 JavaScript 前端开发
如何学习JavaScript?
如何学习JavaScript?
39 5
|
2月前
|
JavaScript
短小精悍的js代码
【10月更文挑战第17天】
129 58
|
17天前
|
JavaScript 前端开发 测试技术
在 golang 中执行 javascript 代码的方案详解
本文介绍了在 Golang 中执行 JavaScript 代码的四种方法:使用 `otto` 和 `goja` 嵌入式 JavaScript 引擎、通过 `os/exec` 调用 Node.js 外部进程以及使用 WebView 嵌入浏览器。每种方法都有其适用场景,如嵌入简单脚本、运行复杂 Node.js 脚本或在桌面应用中显示 Web 内容。
51 15
在 golang 中执行 javascript 代码的方案详解
|
1月前
|
JavaScript
原生js炫酷随机抽奖中奖效果代码
原生js随机抽奖是一个炫酷的根据数据随机抽奖的代码,该网页可进行随机抽取一个数据,页面动画高科技、炫酷感觉的随机抽奖效果,简单好用,欢迎下载!
46 3
原生js炫酷随机抽奖中奖效果代码
|
29天前
|
JavaScript 前端开发 索引
JavaScript学习第二章--字符串
本文介绍了JavaScript中的字符串处理,包括普通字符串和模板字符串的使用方法及常见字符串操作方法如`charAt`、`concat`、`endsWith`等,适合前端学习者参考。作者是一位热爱前端技术的大一学生,专注于分享实用的编程技巧。
24 2
|
29天前
|
存储 JavaScript 前端开发
JavaScript学习第一章
本文档介绍了JavaScript的基础知识,包括其在网页中的作用、如何通过JavaScript动态设置HTML元素的CSS属性,以及JavaScript中的变量类型(`var`、`let`、`const`)和数据类型(基本数据类型与引用数据类型)。通过实例代码详细解释了JavaScript的核心概念,适合初学者入门学习。
48 1
|
22天前
|
JSON JavaScript 关系型数据库
node.js连接GBase 8a 数据库 并进行查询代码示例
node.js连接GBase 8a 数据库 并进行查询代码示例
|
1月前
|
JavaScript 前端开发 开发者
如何在 Visual Studio Code (VSCode) 中使用 ESLint 和 Prettier 检查代码规范并自动格式化 Vue.js 代码,包括安装插件、配置 ESLint 和 Prettier 以及 VSCode 设置的具体步骤
随着前端开发技术的快速发展,代码规范和格式化工具变得尤为重要。本文介绍了如何在 Visual Studio Code (VSCode) 中使用 ESLint 和 Prettier 检查代码规范并自动格式化 Vue.js 代码,包括安装插件、配置 ESLint 和 Prettier 以及 VSCode 设置的具体步骤。通过这些工具,可以显著提升编码效率和代码质量。
450 4
|
1月前
|
JSON 移动开发 数据格式
html5+css3+js移动端带歌词音乐播放器代码
音乐播放器特效是一款html5+css3+js制作的手机移动端音乐播放器代码,带歌词显示。包括支持单曲循环,歌词显示,歌曲搜索,音量控制,列表循环等功能。利用json获取音乐歌单和歌词,基于html5 audio属性手机音乐播放器代码。
110 6
下一篇
DataWorks