开发用到的js封装方法(20种)

下面是针对这个主题的完整攻略:

简介

在开发过程中,常常会使用到一些封装好的 JavaScript 方法,可以提高代码复用性、简化开发流程。本文总结了开发常用的 20 种 JavaScript 封装方法,希望能对大家有所帮助。

1. 数组操作

1.1. 将数组转换为对象

function arrayToObject(arr) {
  return arr.reduce((obj, item) => {
    obj[item.id] = item;
    return obj;
  }, {});
}

示例:

const arr = [
  { id: 1, name: 'apple' },
  { id: 2, name: 'banana' },
  { id: 3, name: 'orange' },
];
const obj = arrayToObject(arr);
// { "1": { id: 1, name: 'apple' }, "2": { id: 2, name: 'banana' }, "3": { id: 3, name: 'orange' } }

1.2. 数组去重

function uniqueArray(arr) {
  return [...new Set(arr)];
}

示例:

const arr = [1, 2, 3, 2, 1, 4, 5, 4];
const uniqueArr = uniqueArray(arr);
// [1, 2, 3, 4, 5]

1.3. 求数组最大值/最小值

function maxFromArray(arr) {
  return Math.max(...arr);
}

function minFromArray(arr) {
  return Math.min(...arr);
}

示例:

const arr = [1, 2, 3, 4, 5];
const max = maxFromArray(arr);
const min = minFromArray(arr);
// max: 5, min: 1

1.4. 数组扁平化

function flatten(arr) {
  return [].concat(...arr.map(item => Array.isArray(item) ? flatten(item) : item));
}

示例:

const arr = [1, [2, [3, [4, 5]]], 6];
const flatArr = flatten(arr);
// [1, 2, 3, 4, 5, 6]

2. 对象操作

2.1. 合并多个对象

function mergeObject(...objs) {
  return Object.assign({}, ...objs);
}

示例:

const obj1 = { a: 1 };
const obj2 = { b: 2 };
const obj3 = { c: 3 };
const mergedObj = mergeObject(obj1, obj2, obj3);
// { a: 1, b: 2, c: 3 }

2.2. 深拷贝对象

function deepClone(obj) {
  if (typeof obj !== 'object' || obj === null) {
    return obj;
  }
  let clone = {};
  if (Array.isArray(obj)) {
    clone = [];
  }
  for (let key in obj) {
    if (obj.hasOwnProperty(key)) {
      clone[key] = deepClone(obj[key]);
    }
  }
  return clone;
}

示例:

const obj = {
  a: 1,
  b: {
    c: [2, 3, 4],
    d: 'hello'
  }
};
const clone = deepClone(obj);

2.3. 从对象中删除属性

function omit(obj, keys) {
  const newObj = {...obj};
  keys.forEach(key => delete newObj[key]);
  return newObj;
}

示例:

const obj = {
  a: 1,
  b: 2,
  c: 3,
  d: 4
};
const newObj = omit(obj, ['a', 'd']);
// { b: 2, c: 3 }

3. 字符串操作

3.1. 字符串翻转

function reverseString(str) {
  return str.split('').reverse().join('');
}

示例:

const str = 'hello world';
const reversedStr = reverseString(str);
// 'dlrow olleh'

3.2. 首字母大写

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

示例:

const str = 'hello world';
const capitalizedStr = capitalize(str);
// 'Hello world'

3.3. 清除空格

function trim(str) {
  return str.replace(/^\s+|\s+$/g, '');
}

示例:

const str = '   hello world   ';
const trimmedStr = trim(str);
// 'hello world'

4. 其他常用方法

4.1. 等待一段时间后执行函数

function delay(fn, wait, ...args) {
  setTimeout(fn.bind(null, ...args), wait);
}

示例:

function sayHello(name) {
  console.log(`Hello, ${name}!`);
}
delay(sayHello, 1000, 'Alice'); // 1 秒后输出 "Hello, Alice!"

4.2. 防抖函数

function debounce(fn, wait) {
  let timer;
  return function(...args) {
    clearTimeout(timer);
    timer = setTimeout(() => {
      fn.apply(this, args);
    }, wait);
  };
}

示例:

function sayHello() {
  console.log('Hello, world!');
}
const debouncedSayHello = debounce(sayHello, 1000);
window.addEventListener('scroll', debouncedSayHello);
// 当用户滚动网页时,函数将最多每秒执行一次

4.3. 节流函数

function throttle(fn, wait) {
  let canRun = true;
  return function() {
    if (!canRun) return;
    canRun = false;
    setTimeout(() => {
      fn.apply(this, arguments);
      canRun = true;
    }, wait);
  };
}

示例:

function sayHello() {
  console.log('Hello, world!');
}
const throttledSayHello = throttle(sayHello, 1000);
window.addEventListener('scroll', throttledSayHello);
// 当用户滚动网页时,函数将最多每秒执行一次

以上就是本文总结的 20 种 JavaScript 封装方法,希望对大家有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:开发用到的js封装方法(20种) - Python技术站

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

相关文章

  • JavaScript中对象property的读取和写入方法介绍

    下面我就来为你详细讲解“JavaScript中对象property的读取和写入方法介绍”。 什么是对象property 在JavaScript中,对象是一种基本类型,它由key-value键值对组成。对象的属性可以是任意的JavaScript值,例如数字、布尔值、字符串、函数、甚至可以是另一个对象。在JavaScript中,我们使用点(.)或方括号([])访…

    JavaScript 2023年5月27日
    00
  • 浅谈Ajax相关及其优缺点

    浅谈Ajax相关及其优缺点 什么是Ajax Ajax全称为Asynchronous JavaScript and XML(异步的 JavaScript 和 XML),是一种用于创建现代Web应用的技术。它可以让网页在不刷新的情况下向服务器发送请求,获取数据并作出相应的动态更新。 Ajax的优缺点 优点 异步请求:可以在不刷新页面的情况下与服务器通信,否则需要…

    JavaScript 2023年6月11日
    00
  • Android开发中使用WebView控件浏览网页的方法详解

    Android开发中使用WebView控件浏览网页的方法详解 为什么要用WebView? 在Android应用程序中,使用WebView组件可以使我们的应用程序直接显示网页内容。实际上,WebView是最常用的界面控件之一,因为在Android平台上许多应用程序都需要能够直接调用Web内容,并能方便地浏览它。 如何使用WebView? 1. 添加权限 在An…

    JavaScript 2023年6月11日
    00
  • 页面中js执行顺序

    下面是页面中js执行顺序的完整攻略。 执行顺序 在页面中,JavaScript脚本可以通过多种方式嵌入到HTML文档中,如内联脚本、外部脚本和动态添加脚本等。JavaScript脚本的执行顺序有以下规则: 按照文档内的顺序解析脚本,在HTML文档中与JavaScript相关的所有元素按照它们在文档中的顺序来解析。因此,文档中后面出现的脚本无法使用文档前面定义…

    JavaScript 2023年5月28日
    00
  • 才发现的超链接js导致网页中GIF动画停止的解决方法

    完整攻略如下: 问题背景 当我们在网页中添加一些超链接时,有时会发现网页中的GIF动画会停止播放,这是因为一些不合适的js代码导致了GIF动画的暂停。本攻略将详细介绍这个问题的解决方法。 发现问题 首先,我们需要确定是否存在这个问题。当我们添加了一个超链接,然后在网页中出现了GIF动画,观察动画是否会在超链接出现时暂停。如果动画暂停,那么就有可能是因为超链接…

    JavaScript 2023年6月10日
    00
  • js Array操作的最简短最容易理解方法

    下面就为大家详细讲解一下“js Array操作的最简短最容易理解方法”的完整攻略。 操作数组的方法 在JavaScript中,我们可以使用许多方法来操作数组,包括以下几个: push()方法 push()方法可以向数组末尾添加新元素。 const fruits = [‘apple’, ‘banana’]; fruits.push(‘orange’); con…

    JavaScript 2023年5月27日
    00
  • JavaScript实现数组降维详解

    现在我会详细讲解一下“JavaScript实现数组降维详解”的完整攻略,过程中将包含两个示例。 什么是数组降维? 在 JavaScript 中,一个数组可能会包含多个层级,这时候我们可能需要将这个多维数组转换为一维数组,这个过程就被称为数组降维。 实现数组降维 在 JavaScript 语言中,我们可以使用一些方法来实现数组降维。 方法一:使用 flat()…

    JavaScript 2023年5月27日
    00
  • js实现动态显示时间效果

    一、使用JavaScript获取当前时间 在JavaScript中,可以使用new Date()方法创建一个Date对象,该对象获取到的是当前电脑系统的时间。可以将该对象保存到一个变量中,用于后续操作。 示例代码: var currentTime = new Date(); 二、格式化时间 为了在页面中展示时间,需要对时间进行格式化。JavaScript提供…

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