常用原生js自定义函数总结

常用原生JS自定义函数总结

这篇攻略将会介绍一些常用的原生JS自定义函数,包括数组、字符串、日期、对象等方面,让您更加深入地了解JS的各个方面。

数组

数组去重函数

function uniqueArr(arr) {
  return Array.from(new Set(arr));
}

// 示例
const arr1 = [1, 2, 3, 2, 1];
console.log(uniqueArr(arr1)); // [1, 2, 3]

数组扁平化函数

function flatten(arr) {
  return arr.reduce((acc, cur) => 
    Array.isArray(cur) ? acc.concat(flatten(cur)) : acc.concat(cur), [])
};

// 示例
const arr2 = [1, [2, [3, 4], 5], 6];
console.log(flatten(arr2)); // [1, 2, 3, 4, 5, 6]

字符串

首字母大写函数

function capitalize(str) {
  return str.charAt(0).toUpperCase() + str.slice(1);
}

// 示例
const str1 = "hello world";
console.log(capitalize(str1)); // "Hello world"

字符串翻转函数

function reverseStr(str) {
  return str.split("").reverse().join("");
}

// 示例
const str2 = "hello world";
console.log(reverseStr(str2)); // "dlrow olleh"

日期

获取当前时间戳

function getCurrentTimestamp() {
  return new Date().getTime();
}

// 示例
console.log(getCurrentTimestamp()); // 1642117182692

自定义时间格式化函数

function formatDate(date, fmt) {
  let o = {
    "M+": date.getMonth() + 1,
    "d+": date.getDate(),
    "h+": date.getHours(),
    "m+": date.getMinutes(),
    "s+": date.getSeconds(),
    "q+": Math.floor((date.getMonth() + 3) / 3),
    "S": date.getMilliseconds()
  };

  if (/(y+)/.test(fmt)) {
    fmt = fmt.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length));
  }

  for (let k in o) {
    if (new RegExp("(" + k + ")").test(fmt)) {
      fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
    }
  }

  return fmt;
}

// 示例
const date = new Date();
console.log(formatDate(date, "yyyy-MM-dd hh:mm:ss.S")); // "2022-01-14 10:32:16.083"

对象

判断空对象函数

function isEmptyObject(obj) {
  return Object.keys(obj).length === 0;
}

// 示例
const obj1 = {};
console.log(isEmptyObject(obj1)); // true

const obj2 = { name: 'Alice' };
console.log(isEmptyObject(obj2)); // false

深复制对象函数

function deepCopy(obj) {
  let newObj = Array.isArray(obj) ? [] : {};

  for(let key in obj) {
    if(obj.hasOwnProperty(key)) {
      newObj[key] = typeof obj[key] === 'object' ? deepCopy(obj[key]) : obj[key];
    }
  }

  return newObj;
}

// 示例
const obj3 = { name: 'Alice', age: 20, hobbies: ['reading', 'swimming'] };
const obj4 = deepCopy(obj3);
obj4.hobbies.push('playing');
console.log(obj3.hobbies); // ['reading', 'swimming']
console.log(obj4.hobbies); // ['reading', 'swimming', 'playing']

通过上面的示例说明,可以看出每个函数的用法和具体实现,避免了对函数理解上的模糊。这也只是JS中一些常用的自定义函数总结,关于JS还有很多非常实用的函数和功能,需要我们不断学习和探索。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:常用原生js自定义函数总结 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • 总结JavaScript三种数据存储方式之间的区别

    当我们开发基于 JavaScript 的应用程序时,我们需要考虑如何在应用程序中存储数据。JavaScript 中有很多种数据存储方式,本文将介绍三种最常用的数据存储方式,包括: Cookie Web 存储(LocalStorage 和 SessionStorage) IndexedDB Cookie Cookie 是最早的 Web 储存技术之一,可以通过 …

    JavaScript 2023年6月11日
    00
  • Node.js 和 Python之间该选择哪个?

    当你需要选择一种服务器端开发语言时,Node.js 和 Python 都是不错的选择。它们都有广泛的应用和生态系统,但它们之间也存在一些区别。 1. Node.js vs Python:概述 Node.js Node.js 是一种使用 JavaScript 编写的服务器端运行环境。它采用事件驱动、非阻塞 I/O 模型,使得它非常适合构建高性能的 Web 应用…

    JavaScript 2023年5月28日
    00
  • JS输出空格的简单实现方法

    要实现JS输出空格,有多种方法。下面我们介绍两种方法: 方法一:使用HTML中的空格符 HTML中的空格符,即&nbsp;,可以被JS读取并输出。使用这个符号,可以轻易地输出空格,如下所示: <!DOCTYPE html> <html> <head> <title>JS输出空格的方法示例</tit…

    JavaScript 2023年5月28日
    00
  • javascript for-in有序遍历json数据并探讨各个浏览器差异

    JavaScript for-in 有序遍历 JSON 数据并探讨各个浏览器差异 什么是JavaScript for-in? JavaScript for-in 语句循环遍历对象的属性。语句还会遍历可枚举的属性,其中不仅包括对象自己的属性,还包括从它的原型继承的属性。 如何使用JavaScript for-in有序遍历JSON数据? 在 JavaScript…

    JavaScript 2023年5月27日
    00
  • 浅谈JS中this在各个场景下的指向

    让我们来详细讲解一下“浅谈JS中this在各个场景下的指向”。 1. this 介绍 在JavaScript中,this 指的是函数执行时所处的上下文对象。或者说,this 指的是调用该函数的对象。 this 可以在不同的环境下有不同的值,它的值取决于它所在的执行上下文。 2. this 在各个场景下的指向 2.1 在全局作用域下 在全局作用域下执行 thi…

    JavaScript 2023年6月10日
    00
  • JS动态生成年份和月份实例代码

    下面我将为你详细讲解JS动态生成年份和月份实例代码的完整攻略。 1. 使用方法说明 该代码实现的功能是通过JS生成一个下拉框,用于选择年份和月份。在使用该代码前,需要将以下代码拷贝到你的HTML文件中: <!– 引入jquery –> <script src="https://cdn.bootcdn.net/ajax/libs…

    JavaScript 2023年5月27日
    00
  • JavaScript 参数中的数组展开 [译]

    文章“JavaScript 参数中的数组展开 [译]”介绍了JavaScript的一个很有用的语法特性:展开运算符(spread operator)。在函数参数中使用展开运算符可以方便地将数组或对象中的内容“展开”成独立的元素,方便使用。本文将对这一语法进行详细讲解。 什么是展开运算符? 展开运算符用符号“…”表示,它可以将一个数组或者类数组对象中的所有…

    JavaScript 2023年5月27日
    00
  • 原生js封装的ajax方法示例

    这里是“原生js封装的ajax方法示例”的完整攻略: 简介 在前后端分离的现代web开发中,ajax技术得到了广泛应用。ajax可以在不刷新页面的条件下与后台服务器交互,实现了异步加载和动态更新页面的功能。在此过程中,封装一个通用的、可复用的ajax方法是非常必要的。本文将演示如何使用原生的JavaScript来封装一个ajax方法。 实现步骤 1. 按照顺…

    JavaScript 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部