【面试题】JavaScript你常用那些方法 呢?

简介: 【面试题】JavaScript你常用那些方法 呢?

大厂面试题分享 面试题库

前后端面试题库 (面试必备) 推荐:★★★★★

地址:前端面试题库

分享一些常用的JS方法

1、Copy URL地址
方式一
/**
 * @description 拷贝地址
 * @param {string} url 地址
 **/exportconstcopyUrl = (url, type = 1) => {
  if (type == 1) {
    navigator.clipboard
      .writeText(url)
      .then(() => {
        console.log("复制成功");
      })
      .catch(err => {
        console.log("复制失败", err);
      });
    return;
  }
};
方式二
/**
 * @description 拷贝地址
 * @param {string} url 地址
 **/exportconstcopyUrl = (url) => {
        let input = document.createElement("input");
        input.value = url;
        document.body.appendChild(input);
        input.select();
        document.execCommand("copy");
        document.body.removeChild(input);
};
2、处理文件大小展示
/**
 * @description 计算文件大小
 * @param {number} fileSize 文件大小
 * @return {string} 计算后的文件大小值
 **/exportconstname = (fileSize = 0) => {
  if (!fileSize) returnnull;
  let size = 0,
    unit = "";
  if (fileSize > 1073741824) {
    size = (fileSize / 1073741824).toFixed(4) * 1;
    unit = "GB";
  } elseif (fileSize > 1048576) {
    size = (fileSize / 1048576).toFixed(4) * 1;
    unit = "MB";
  } elseif (fileSize > 1024) {
    size = (fileSize / 1024).toFixed(4) * 1;
    unit = "KB";
  } else {
    size = fileSize;
    unit = "B";
  }
  return size + unit;
};
3、获取音频/视频时长
/**
 * @description 获取音/视频时长
 * @param {string/object} file 文件地址/对象
 * @return {number} 媒体文件时长
 **/exportconstgetMediaDuration = file => {
  returnnewPromise(resolve => {
    // 是否是文件对象
    let hasFile = file instanceofFile;
    let fileUrl = hasFile ? URL.createObjectURL(file) : file;
    // 创建对象
    let audioElement = newAudio(fileUrl);
    // 监听对象
    audioElement.addEventListener("loadedmetadata", () => {
      let time = Math.floor(audioElement.duration) || 0;
      resolve(time);
    });
    // 加载失败
    audioElement.addEventListener("error", () => {
      resolve(0);
    });
  });
};
4、下载文件
/**
 * @description 下载文件
 * @param {string} fileUrl 文件链接地址
 **/exportconstdownloadFile = fileUrl => {
  const iframe = document.createElement("iframe");
  // 防止影响页面布局
  iframe.style.display = "none";
  iframe.style.height = 0;
  iframe.src = fileUrl;
  document.body.appendChild(iframe);
  // 加载完成后移除创建的标签
  iframe.onload = function () {
    document.body.removeChild(iframe);
  };
};
5、对象数组去重
/**
 * @description 对象数组去重
 * @param {Array} list 数组
 * @param {String} key 唯一键
 * @return {Array} 去重后的数组
 **/exportconstarrayDeduplication = (list, key) => {
  return list.filter((item, index, self) => {
    return self.findIndex(el => el[key] === item[key]) === index;
  });
};
6、获取地址栏参数
方式一
/**
 * @description 获取地址栏参数
 * @param {string} key 参数名
 * @return {string} 参数值
 **/exportconstqueryParams = key => {
  if (!key) returnnull;
  let url = newURL(location.href);
  let value = url.searchParams.get(key);
  return value;
};
方式二
/**
 * @description 获取地址栏参数
 * @param {String} key 要取值的参数
 * @return {String} 获取的值
 *  */exportconstgetQueryString = name => {
  let reg = newRegExp("(^|&)" + name + "=([^&]*)(&|$)");
  let r = window.location.search.substring(1).match(reg);
  if (r != null) returndecodeURI(r[2]);
  returnnull;
};
7、params参数处理
/**
 * @description 参数处理
 * @param {Object} params  参数
 */exportconsttansParams = params => {
  let result = "";
  for (const propName ofObject.keys(params)) {
    const value = params[propName];
    var part = encodeURIComponent(propName) + "=";
    if (value !== null && value !== "" && typeof value !== "undefined") {
      if (typeof value === "object") {
        for (const key ofObject.keys(value)) {
          if (value[key] !== null && value[key] !== "" && typeof value[key] !== "undefined") {
            let params = propName + "[" + key + "]";
            var subPart = encodeURIComponent(params) + "=";
            result += subPart + encodeURIComponent(value[key]) + "&";
          }
        }
      } else {
        result += part + encodeURIComponent(value) + "&";
      }
    }
  }
  return result;
};

大厂面试题分享 面试题库

前后端面试题库 (面试必备) 推荐:★★★★★

地址:前端面试题库

相关文章
|
1月前
|
JavaScript 前端开发 程序员
前端原生Js批量修改页面元素属性的2个方法
原生 Js 的 getElementsByClassName 和 querySelectorAll 都能获取批量的页面元素,但是它们之间有些细微的差别,稍不注意,就很容易弄错!
|
1月前
|
Web App开发 JavaScript 前端开发
如何确保 Math 对象的方法在不同的 JavaScript 环境中具有一致的精度?
【10月更文挑战第29天】通过遵循标准和最佳实践、采用固定精度计算、进行全面的测试与验证、避免隐式类型转换以及持续关注和更新等方法,可以在很大程度上确保Math对象的方法在不同的JavaScript环境中具有一致的精度,从而提高代码的可靠性和可移植性。
|
29天前
|
监控 JavaScript Java
Node.js中内存泄漏的检测方法
检测内存泄漏需要综合运用多种方法,并结合实际的应用场景和代码特点进行分析。及时发现和解决内存泄漏问题,可以提高应用的稳定性和性能,避免潜在的风险和故障。同时,不断学习和掌握内存管理的知识,也是有效预防内存泄漏的重要途径。
124 52
|
1月前
|
JavaScript 前端开发 索引
js中DOM的基础方法
【10月更文挑战第31天】这些DOM基础方法是操作网页文档结构和实现交互效果的重要工具,通过它们可以动态地改变页面的内容、样式和行为,为用户提供丰富的交互体验。
|
1月前
|
缓存 JavaScript UED
js中BOM中的方法
【10月更文挑战第31天】
|
1月前
|
缓存 JavaScript 前端开发
JavaScript 与 DOM 交互的基础及进阶技巧,涵盖 DOM 获取、修改、创建、删除元素的方法,事件处理,性能优化及与其他前端技术的结合,助你构建动态交互的网页应用
本文深入讲解了 JavaScript 与 DOM 交互的基础及进阶技巧,涵盖 DOM 获取、修改、创建、删除元素的方法,事件处理,性能优化及与其他前端技术的结合,助你构建动态交互的网页应用。
43 5
|
1月前
|
JavaScript 前端开发
js中的bind,call,apply方法的区别以及用法
JavaScript中,`bind`、`call`和`apply`均可改变函数的`this`指向并传递参数。其中,`bind`返回一个新函数,不立即执行;`call`和`apply`则立即执行,且`apply`的参数以数组形式传递。三者在改变`this`指向及传参上功能相似,但在执行时机和参数传递方式上有所区别。
26 1
|
1月前
|
JavaScript 前端开发
.js方法参数argument
【10月更文挑战第26天】`arguments` 对象为JavaScript函数提供了一种灵活处理参数的方式,能够满足各种不同的参数传递和处理需求,在实际开发中具有广泛的应用价值。
42 7
|
1月前
|
存储 Java 程序员
Java基础的灵魂——Object类方法详解(社招面试不踩坑)
本文介绍了Java中`Object`类的几个重要方法,包括`toString`、`equals`、`hashCode`、`finalize`、`clone`、`getClass`、`notify`和`wait`。这些方法是面试中的常考点,掌握它们有助于理解Java对象的行为和实现多线程编程。作者通过具体示例和应用场景,详细解析了每个方法的作用和重写技巧,帮助读者更好地应对面试和技术开发。
121 4
|
1月前
|
JavaScript 前端开发 图形学
JavaScript 中 Math 对象常用方法
【10月更文挑战第29天】JavaScript中的Math对象提供了丰富多样的数学方法,涵盖了基本数学运算、幂运算、开方、随机数生成、极值获取以及三角函数等多个方面,为各种数学相关的计算和处理提供了强大的支持,是JavaScript编程中不可或缺的一部分。