是否可以在javascript中创建固定长度的数组?

2023-12-25

在Javascript中,是否可以创建一个保证长度保持不变的数组?

例如,数组A创建的长度为 2。随后,任何调用的尝试A.push() or A.pop(),或设置值A[5]将失败。A.length永远是 2。

这是输入数组的方式(例如Float32Array)已经可以工作了。它们有固定的尺寸。但我想要一种在常规数组上获得相同行为的方法。

对于我的具体情况,我想创建一个固定长度的数组,其中每个条目都是一个对象。但我仍然想知道一般问题的答案。


Update:

对象密封 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/seal(这是 ES2015 的一部分)将做到这一点:

// create array with 42 empty slots
let a = new Array(42);

if(Object.seal) {
  // fill array with some value because
  // empty slots can not be changed after calling Object.seal
  a.fill(undefined);

  Object.seal(a);
  // now a is a fixed-size array with mutable entries
}

原答案:

几乎。正如所建议的titusfx https://stackoverflow.com/users/929026/titusfx您可以冻结该对象:

let a = new Array(2);

// set values, e.g.
a[0] = { b: 0; }
a[1] = 0;

Object.freeze(a);

a.push(); // error
a.pop(); // error
a[1] = 42; // will be ignored
a[0].b = 42; // still works

但是,您无法更改冻结对象的值。 如果你有一个对象数组,这可能不是问题,因为你仍然可以 更改对象的值。

对于数字数组当然有类型数组 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Typed_arrays.

Object.freeze是其一部分ES2015 但大多数浏览器似乎都支持它,包括IE9 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze。您当然可以对其进行功能测试:

if(Object.freeze) { Object.freeze(obj); }

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以在javascript中创建固定长度的数组? 的相关文章

  • 如何在没有 jQuery 的情况下删除 Javascript 中的元素

    我试图通过以下方式从 DOM 中删除 Div a 标签嵌套在其中 我想我正在寻找的是 jQuery 的纯 Javascript 版本 div remove 这是html设置 div a href Click me to remove the
  • .push() 将多个对象放入 JavaScript 数组中返回“未定义”

    当我将项目添加到beats数组然后console log用户时 我得到了数组中正确的项目数 但是当我检查 length 时 我总是得到 1 尝试调用索引总是会给我 未定义 如下所示 Tom beats 1 我想我错过了一些明显的东西 但这让
  • 在版本 4.4.6 中禁用 ckeditor 上下文菜单

    我在 Rails4 项目中使用 ckeditor 我尝试了 ckeditor gem 和 ckeditor rails gem 来提供 ckeditor 库 这里有多个帖子 人们希望删除 ckeditor 上下文菜单 以便可以显示本机浏览器
  • 标准转换:数组到指针的转换

    这是ISO的观点 标准转换 数组到指针的转换 4 2 1 数组 类型的左值或右值 N T 或 未知边界的数组 T 可以转换为右值 类型为 指向 T 的指针 结果是 指向第一个元素的指针 数组 如果可能的话 任何人都可以用一个示例程序来解释这
  • 3D 数组到 3D std::vector

    我在代码函数中用 3D std vector 替换了 3D 数组 它进入了无限循环 你能给我一个提示吗 我真的需要使用向量而不是数组 谢谢 我最初的代码是 arr is a 3D array of a sudoku table the 3
  • 导航栏下拉菜单(折叠)在 Bootstrap 5 中不起作用

    我在尝试使用以下命令创建响应式菜单或下拉按钮时遇到问题Bootstrap 5一切似乎都正常 导航图标和下拉图标出现 但它不起作用 当我单击nav图标或dropdown按钮 无dropdown menu apears 我想特别提到的是 我还包
  • ReactTransitionGroup 不适用于 React-redux 连接组件

    我正在开发一个更大的项目 但我创建了这个简短的示例来说明问题 如果我使用Box组件 它的工作原理 它在控制台中输出componentWillEnter and componentWillLeave当我们点击按钮时 如果我使用BoxConta
  • React autoFocus 将光标设置为输入值的开头

    我有一个受控输入 最初显示一个值 我已将该输入设置为自动聚焦 但当我希望它出现在末尾时 光标出现在输入的开头 我知道这可能是因为自动对焦是在值之前添加的 但我不能 100 确定 在输入字段末尾完成光标初始化的最佳方法是什么 var Test
  • JavaScript 中的 Promise 有什么意义?

    一个承诺是一个 可能现在可用 或将来可用 或永远不可用的值 来源 MDN 假设我有一个想要处理图片的应用程序 图片已加载 例如在算法在后台使用它之后 或某种其他类型的延迟 现在我想检查一下图片是否可以在future 通过使用承诺 而不是回调
  • 总和不小于 key 的数组的最小子集

    给定一个数组 假设为非负整数 我们需要找到最小长度子集 使得元素之和不小于 K K 是作为输入提供的另一个整数 是否有可能找到时间复杂度为 O n n 的大 oh 的解决方案 我目前的想法是这样的 我们可以在 O n log n 中对数组进
  • IE 中的 XPath 查询使用从零开始的索引,但 W3C 规范是从一开始的。我应该如何处理差异?

    问题 我正在转换目前仅适用于 Internet Explorer 的相对较大的 Javascript 代码 以便使其也适用于其他浏览器 由于代码广泛使用 XPath 我们做了一些兼容性功能以使事情变得更容易 function selectN
  • 如何使用 Javascript 设置查询字符串

    有没有办法使用 javascript 设置查询字符串的值 我的页面有一个过滤器列表 单击该列表时 它将更改右侧的页内结果窗格 我正在尝试更新 url 的查询字符串值 因此如果用户离开页面 然后单击 后退 按钮 他们将返回到最后一个过滤器选择
  • 如何正确取消引用然后删除 JavaScript 对象?

    我想知道从内存中完全取消引用 JavaScript 对象的正确方法 确保删除时不会在内存中悬空 并且垃圾收集器会删除该对象 当我看这个问题时在 JavaScript 中删除对象 https stackoverflow com questio
  • 如何计算特定字符在字符串中出现的次数

    我正在尝试创建一个函数来查看数组中的任何字符是否在字符串中 如果是 有多少个 我尝试计算每一种模式 但是太多了 我尝试使用 Python 中的 in 运算符的替代方案 但效果不佳 function calc fit element var
  • LeafleteachLayer函数不会迭代所有Layer

    使用 GeoJSON 数据数组创建一些标记 getJSON GetLocationsServlet function data L geoJSON data onEachFeature onEachFeature addTo mymap G
  • 表单发布请求并存储收到的数据

    我有一个非常简单的表单 在提交时发出发布请求
  • 从 pygame 获取 numpy 数组

    我想通过 python 访问我的网络摄像头 不幸的是 由于网络摄像头的原因 openCV 无法工作 Pygame camera 使用以下代码就像魅力一样 from pygame import camera display camera in
  • 主页(网格)上的缩略图现在显得模糊。如何纠正?

    我不知道这看起来是否愚蠢 但从早上开始我就无法纠正这个突然出现在我的博客网站上的错误www candidopinions in http www candidopinions in 我有一个网格视图模板 其中博客文章中的特色图像作为调整大小
  • 什么是 WKWebView 中的 WKErrorDomain 错误 4

    fatal error LPWebView encounters an error Error Domain WKErrorDomain Code 4 A JavaScript exception occurred UserInfo 0x7
  • 将数组从 jquery ajax 传递到代码后面

    我必须将二维数组传递给在asp net网页代码后面编写的页面方法我有一个变量objList作为二维数组 我使用以下代码来实现此目的 但没有成功 并且未调用页面方法 脚本语言 function BindTable objList ajax u

随机推荐

  • 为什么 Android 中的第一个选项卡 Activity 会永远存在?

    我创建了一个简单的 TabActivity 它在运行时构建选项卡并读取一些 JSON 数据 目前 我正在为每个选项卡初始化一个带有虚拟随机项目的空 ListActivity 只是为了查看从一个选项卡到另一个选项卡的更改是否有效 并且内容不会
  • 随机插入但切勿相邻

    基于在 div 列表中的随机位置插入一个 div https stackoverflow com questions 17238255 insert a div in a random location in a list of divs
  • 使用模板时出现“错误 LNK2019:无法解析的外部符号”[重复]

    这个问题在这里已经有答案了 可能的重复 为什么在使用模板时会出现 无法解析的外部符号 错误 https stackoverflow com questions 456713 why do i get unresolved external
  • TCP 配置的 Amazon Elastic Load Balancer 上的 Socket.io Websocket

    我计划设置一组运行的 NodeJS 应用程序服务器Socket io http socket io 在 EC2 上 我想使用弹性负载均衡器 http aws amazon com elasticloadbalancing 在它们之间分散负载
  • 谷歌云存储桶上的 CORS 设置

    我正在尝试在 google 存储桶上配置 CORS 我想每次创建新存储桶时都设置 CORS 配置 我想通过云存储客户端库来完成此操作 而不是使用 XML API 有办法解决吗 没有任何一个云存储客户端库 https cloud google
  • ASP NET Core 服务特定的 html 页面

    我有这个中间件 public class SpecificPageMiddleware private readonly RequestDelegate next public SpecificPageMiddleware RequestD
  • MVC 3 模型提交后视图未刷新

    我对 MVC 3 项目的看法有一个奇怪的问题 我有一个用于数据编辑的标准视图 使用模板创建 当我提交表格时 我更改了Name属性 但当我从控制器返回浏览器后 我仍然看到lorem价值 为什么 using Html BeginForm Htm
  • 启动 Zookeeper 集群。错误:无法找到或加载主类 org.apache.zookeeper.server.quorum.QuorumPeerMain

    我在 CentOS 5 8 上运行 我一直遵循这个方向集群 多服务器 Zookeeper 设置 http zookeeper apache org doc r3 3 3 zookeeperAdmin html sc zkMulitServe
  • 在 Perl 中使用 Spreadsheet::ParseExcel,但需要帮助

    我有一个使用 Spreadsheet ParseExcel 的 Perl 程序 然而 出现了两个困难 我一直不知道如何解决 该程序的脚本如下 usr bin perl use strict use warnings use Spreadsh
  • 更新不同深度的嵌套字典的值

    我正在寻找一种更新字典的方法dictionary1与 dict 的内容update不覆盖levelA dictionary1 level1 level2 levelA 0 levelB 1 update level1 level2 leve
  • 如何从 Groovy 中的对象获取嵌套属性值?

    考虑在 Groovy 中您有类型的情况Company class Company def name def contactPerson and contactPerson of Contact type class Contact def
  • 使用指针访问未对齐的结构成员

    我有以下结构 typedef struct attribute packed uint16 t a uint32 t b st t gt b 成员未对齐 当我执行以下操作时 gcc 会发出警告 st t st uint32 t b p st
  • 如何在 C# 中将自定义 propertyGrid 与标准控件连接?

    我正在创建一个图形程序 我希望允许用户能够更改他们创建的图形的外观 为他们提供更改系列颜色 数据点大小等的机会 我允许他们通过使用 propertyGrid 来做到这一点 然而 在使用 Stack Overflow 的优秀人员的帮助下 我能
  • Javascript 中的经典字数统计算法

    拜托 伙计们 我哪里错了 经典的字数统计算法 给定一个字符串数组 返回一个 Map 每个字符串都有一个键 不同的字符串 其值是该字符串在数组中出现的次数 wordCount a b a c b a 2 b 2 c 1 wordCount c
  • URL 中的奇怪字符

    在我的网络服务器中 当用户请求带有奇怪字符的 URL 时 我会删除这些字符 系统会记录这些情况 当我检查已消毒的箱子时 我发现了这些 我很好奇这些 URL 的目的是什么 我检查了 IP 这些都是真实的人 并且像普通人一样使用网站 但这些人的
  • vim中将制表符替换为空格

    我想在 gVim 中将制表符转换为空格 我将以下行添加到我的 vimrc set tabstop 2 它可以在两个空格处停止 但看起来仍然像插入了一个 tab 键 之后我尝试使用 h 键来计算空格数 我不知道应该怎么做才能让 gVim 将制
  • 在 iOS 上使用 OpenAL 进行声音捕捉

    我正在尝试使用 OpenAL 在 iOS 上进行声音捕获 我正在编写一个跨平台库 这就是为什么我避免使用特定于 iOS 的声音录制方式 开箱即用的 OpenAL 捕获不起作用 但存在一个已知的解决方法 在开始捕获之前打开输出上下文 http
  • 当前上下文中不存在名称“ViewBag” - Visual Studio 2015

    我再次开始使用 ASP NET 进行开发 但在 Visual Studio 中遇到了一个小错误 我的 cshtml 文件在使用一些 razor 函数时显示错误 例如 名称 ViewBag 在当前上下文中不存在 这是一张图片 我正在使用一个演
  • 如何用长文本填充DIV并在溢出时显示省略号

    我有以下 JSFiddle http jsfiddle net ofrj55j4 21 http jsfiddle net ofrj55j4 21 如何在显示省略号之前在 DIV 中显示尽可能多的文本 现在只显示一行 HTML div cl
  • 是否可以在javascript中创建固定长度的数组?

    在Javascript中 是否可以创建一个保证长度保持不变的数组 例如 数组A创建的长度为 2 随后 任何调用的尝试A push or A pop 或设置值A 5 将失败 A length永远是 2 这是输入数组的方式 例如Float32A