iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > html >JavaScript中的类型化数组的用法
  • 378
分享到

JavaScript中的类型化数组的用法

2024-04-02 19:04:59 378人浏览 薄情痞子
摘要

本篇内容介绍了“javascript中的类型化数组的用法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在

本篇内容介绍了“javascript中的类型化数组的用法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

在 JavaScript 这门语言中,我们所有人都必须对数组足够熟悉,知晓数组本质上是动态的,并且可以容纳任何 JavaScript 对象。不过,如果你曾经使用过类似于 C 语言这样的其他语言,你应该知道其数组本质上不是动态的。而且你只能在该数组中存储特定的数据类型,毕竟从性能角度来看,这可以确保数组效率更高。但数组的动态化与存储信息类型的多样化其实并没有使 JavaScript 数组效率低下。在 JavaScript 引擎优化的帮助下,JavaScript 中数组的执行速度其实非常快。

随着 WEB 应用程序功能越来越强大,我们开始需要让 Web 应用程序处理和操纵原始二进制数据。JavaScript 数组无法处理这些原始二进制数据,也因此我们引入了 JavaScript 的类型化数组。

类型化数组

类型化数组是与数组非常相似的对象,但是它提供了一种将原始二进制数据写入内存缓冲区的机制。所有主要浏览器均很好地支持此功能,并且 es6 已将其集成到 JavaScript 核心框架中,也可以访问诸如 map()filter() 等 Array 方法。我强烈建议你浏览本文结尾处提到的资源,以更深入了解类型化数组。

组成

类型化数组由两个主要部分组成,BufferView

缓冲区

BufferArrayBuffer 类型的对象,表示一个数据块。此原始二进制数据块无法被单独访问或修改。你可能好奇,无法访问或修改的数据对象的能有什么用途。实际上视图是缓冲区的读写接口。

视图

View 是一个对象,允许你访问和修改存储在 ArrayBuffer 中的原始二进制内容。一般来说有两种视图。

TypedArray 对象的实例

这些类型的对象与普通数组非常相似,但是仅存储单一类型的数值数据。诸如 Int8Uint8Int16Float32 就是类型化数组的数据类型。类型中的数字表示为数据类型分配的位数。例如,Int8 表示 8 位的整数。

你可以阅读 参考文档 来详细了解类型化数组的数据类型。

DataView 对象的实例

DataView 是一个低级接口,提供了一个 getter / setter api 来读取和写入任意数据到缓冲区。这很大程度上方便了我们的开发,尤其是需要在单个类型化数组中处理多种数据类型时。

使用 DataView 的另一个好处是,它可以让你控制数据的字节序 —— 类型化数组使用平台的字节序。当然如果你的程序运行在本地,这将不是问题,因为你的设备将使用与输入数组相同的字节序。在大多数情况下,你的类型化数组将为低端字节序,因为英特尔采取的是小端字节序。由于英特尔在计算机处理器中非常普遍,因此大多数时候不会出现问题。但是,如果将小端字节序编码的数据传输到使用大端字节序编码的设备,则会导致读取时候的错误,最终可能导致数据的丢失。由于 DataView 使你可以控制字节序的方向,因此你可以在必要时使用它。

是什么使它们与普通数组不同

如前所述,普通的 JavaScript 数组已通过 JavaScript 引擎进行了优化,你没必要为了提升性能而使用类型化数组,因为这不会给你带来太多升级。但是有些特性使类型化数组不同于普通数组,这才可能是你选择它们的原因。

  • 让你能够处理原始二进制数据

  • 由于它们处理的数据类型是有限的,因此与普通数组相比,你的引擎更易优化类型化数组,因为普通数组的优化其实是一个非常复杂的过程。

  • 不能保证普通数组永远都能得到优化,因为你的引擎可能因各种原因决定不进行优化。

在 Web 开发中的用途

XMLHttpRequest API

你可以根据你的响应类型以 ArrayBuffer 形式接收数据响应。

const xhr = new XMLHttpRequest();
xhr.open('GET', exampleUrl);
xhr.responseType = 'arraybuffer';

xhr.onload = function () {
    const arrayBuffer = xhr.response;
    // 处理数据
};

xhr.send();

Fetch API

类似于 XMLHttpRequest API,Fetch API 还允许你在 ArrayBuffer 中接收响应。你只需在 fetch API 响应中使用 arrayBuffer() 方法,你就能够收到一个使用 ArrayBuffer 解析的 Promise

fetch(url)
.then(response => response.arrayBuffer())
.then(arrayBuffer => {
   // 处理数据
});

HTML Canvas

HTML5 canvas 元素使你可以渲染动态的 2D 形状和位图图像。该元素仅充当图形的容器,而图形则是在 JavaScript 的帮助下绘制。

canvas 的 2D Context 使你可以将位图数据作为 Uint8ClampedArray 的实例进行检索。让我们看一下 Axel 博士提供的示例代码:

const canvas = document.getElementById('my_canvas');
const context = canvas.getContext('2d');
const imageData = context.getImageData(0, 0, canvas.width, canvas.height);
const uint8ClampedArray = imageData.data;

WebGL

webGL 允许你渲染高性能的交互式 3D 和 2D 图形。它在很大程度上依赖于类型化数组,因为它会处理原始像素数据以在画布上输出必要的图形。

你可以在 这篇文章 中阅读有关 WebGL 基础的更多信息。

Web Socket

Web Socket 允许你以 Blob 或数组缓冲区的形式发送和接收原始二进制数据。

const socket = new websocket("ws://localhost:8080");
socket.binaryType = "arraybuffer";

// 监听 message
socket.addEventListener("message", function (event) {
    const view = new DataView(event.data);
    // 处理接收数据
});

// 发送二进制数据
socket.addEventListener('open', function (event) {
    const typedArray = new Uint16Array(7);
    socket.send(typedArray.buffer);
});

尽管初学者可能不需要详细了解类型化数组,但是当你进入中高级 JavaScript 开发的时候,它们是必不可少的。这主要是因为你可能要开发需要使用类型化数组的更复杂的应用程序。

“JavaScript中的类型化数组的用法”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: JavaScript中的类型化数组的用法

本文链接: https://www.lsjlt.com/news/74342.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • JavaScript中的类型化数组的用法
    本篇内容介绍了“JavaScript中的类型化数组的用法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在 ...
    99+
    2022-10-19
  • JavaScript中类数组转化为数组的方法有哪些
    小编给大家分享一下JavaScript中类数组转化为数组的方法有哪些,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!类数组转化为数组类数组是具有length属性,但不具有数组原型上的方法。常...
    99+
    2022-10-19
  • JavaScript中如何使用Array.prototype.slice.call()方法将类数组转化为数组
    这篇文章主要介绍了JavaScript中如何使用Array.prototype.slice.call()方法将类数组转化为数组,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,...
    99+
    2022-10-19
  • JavaScript中如何使用Array.from方法将类数组转化为数组
    这篇文章主要介绍JavaScript中如何使用Array.from方法将类数组转化为数组,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Array.fromArray.from(doc...
    99+
    2022-10-19
  • Python基本数据类型中元组的用法
    本篇文章为大家展示了Python基本数据类型中元组的用法,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1.元组的概念python中的元组是有序元素组成的集合,与列表的区别在于,元组是不可变的,一旦定...
    99+
    2023-06-02
  • javascript中判断数据类型的方法
    这篇文章主要介绍了javascript中判断数据类型的方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。js判断数据类型的方法:1、利用typeof操作符,语法“typeof...
    99+
    2023-06-15
  • 如何在JavaScript中优化数据类型的使用?
    当我们在编写JavaScript代码时,数据类型的使用是至关重要的。合理的数据类型使用可以提高代码的性能和可读性。在本文中,我们将探讨如何在JavaScript中优化数据类型的使用。 一、避免使用全局变量 全局变量是JavaScript中最...
    99+
    2023-11-02
    异步编程 javascript 数据类型
  • php数组的类型和实例用法
    本篇内容主要讲解“php数组的类型和实例用法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php数组的类型和实例用法”吧!  数组是一个能在单个变量中存储多个值...
    99+
    2022-10-19
  • JavaScript中数据类型的使用方法有哪些?
    JavaScript作为一门动态类型语言,它的数据类型使用方法非常灵活。在JavaScript中,数据类型主要分为基本数据类型和引用数据类型两大类。本文将会详细介绍JavaScript中各个数据类型的使用方法。 一、基本数据类型 Java...
    99+
    2023-11-02
    异步编程 javascript 数据类型
  • JavaScript 中的数据类型Number
    目录前言1、浮点数2、值的范围3、NaN4、数值转换前言 Number 类型使用 IEEE 754 格式表示整数和浮点值(在某些语言中也叫双精度值)。 IEEE二进制浮点数算术标准;...
    99+
    2022-11-13
  • JavaScript中如何利用concat将类数组转化为数组
    这篇文章主要介绍了JavaScript中如何利用concat将类数组转化为数组,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。利用concat...
    99+
    2022-10-19
  • 详解javascript中的类数组
    这篇文章给大家介绍详解javascript中的类数组,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。什么是类数组顾名思义,这玩意儿肯定是个长得像数组,但又不算数组的东西。那到底是个啥,其实它就是一个对象,一个长的像数组的...
    99+
    2023-06-08
  • JavaScript中检测数据类型的四种方法
    目录1. typeof2. instanceof3. constructor(构造函数)4. Object.prototype.toString.call()前言:在介绍检测数据类型...
    99+
    2022-11-12
  • JavaScript中的数据类型怎么使用
    这篇文章主要介绍“JavaScript中的数据类型怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“JavaScript中的数据类型怎么使用”文章能帮助大家解决问题。一、基本数据类型(原始值类型...
    99+
    2023-06-30
  • JavaScript中的数据类型介绍
    一、基本数据类型(原始值类型) 基本类型:字符串(String)、数字(Number)、布尔(Boolean)、对空(Null)、未定义(Undefined)、Symbol。 基本类...
    99+
    2022-11-13
  • JavaScript原始数据类型Symbol的用法详解
    目录Symbol介绍与创建设置Symbol属性的注意点Symbol属性名的遍历Symbol内置值Symbol.hasInstanceSymbol.isConcatSpreadable...
    99+
    2022-11-13
    JavaScript Symbol JS Symbol
  • javascript中有哪些参数类型转换的方法
    javascript中有哪些参数类型转换的方法?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。JavaScript可以做什么1.可以使网页具有交互性,例如响应用户点击,给用户提供...
    99+
    2023-06-14
  • Schema与数据类型优化的方法
    这篇文章主要介绍Schema与数据类型优化的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!schema就是数据库对象的集合,这个集合包含了各种对象如:表、视图、存储过程、索引等。...
    99+
    2022-10-18
  • JavaScript类型转换的方法
    这篇文章主要讲解了“JavaScript类型转换的方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JavaScript类型转换的方法”吧!  ...
    99+
    2022-10-19
  • Python数据类型中的元组Tuple
    目录一、定义二、合并、重复与删除三、元组转换四、元组中的方法一、定义 元组可以理解为一个只读列表,用()来标识。 定义一个空元组变量 = () 但是如果元组中只有一个元素时,是元组还...
    99+
    2022-11-13
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作