|
|
1
40
更新: Object.seal (这是ES2015的一部分)将做到这一点:
原始答案: 几乎正如 titusfx 可以冻结对象:
但是,无法更改冻结对象的值。 如果您有一个对象数组,这可能不是问题,因为您仍然可以 更改对象的值。 对于数字数组,当然有 typed arrays .
|
|
|
2
6
更新:
公认的答案表明了这个问题是如何解决的
可以
现在可以使用
原始答案: 所以,原来问题的答案似乎只是“不”。不可能创建具有固定长度的本机javascript数组。 但是,您可以创建一个类似于固定长度数组的对象。根据评论中的建议,我提出了两种可能的实现方案,各有利弊。 我还没有弄清楚我将在我的项目中使用这两个选项中的哪一个。我也不是100%满意。请让我知道,如果你有任何想法,以改善他们(我渴望使这些对象尽可能快和有效,因为我将需要他们很多)。 下面是两种实现的代码,以及说明用法的QUnit测试。
|
|
|
3
6
实际上,要在大多数现代浏览器(包括IE 11)上用js创建一个完全优化的真正的c类固定数组,你可以使用:TypedArray或ArrayBuffer,比如:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray |
|
|
4
4
你可以这样简单地使用。
基本上,它将填充数组中的项目,直到长度变为5,如果长度将变为5。它会弹出一个项目数组。因此,它将保持长度始终为5。 |
|
|
5
1
目前的答案是可以的。有几种方法可以做到这一点,但有些网络浏览器有自己的“解释”。
重要的是要注意,如果数组是对象,则需要进行深度冻结。deepfreeze的代码是 here .
|
|
6
1
但是,创建的数组中填充了
|
|
|
7
0
我已经写了一个数组 https://github.com/MatrixAI/js-array-fixed 它是一个库,为您提供固定长度数组和固定长度密集数组(数组的元素总是向左折叠或向右折叠)。 它支持许多标准阵列操作,例如拼接和切片。但未来还可以增加更多的业务。
概念
|
|
|
8
0
我们可以用闭包来解决这类问题。我们只是固定了数组的大小,然后从一个函数返回一个函数。
|
|
|
9
0
您可以实现一个具有容量的类。假设您希望在推入阵列时长度保持在5。如果运行代码段,您将看到6没有进入阵列,因为容量已经满足。顺致敬意,
|
|
|
10
0
大堆如果阵列为空,pop已经失败。 如果推送会违反固定大小,则希望推送失败,所以不要使用数组。只需使用一个函数即可:
我使用不同类型的固定长度数组来保存最近的文件。在这种情况下,你可以继续推,数组将只存储最后一个固定数量的项目。记住数组。push会添加到数组的末尾,因此要推送另一项,可以使用splice(0,1)删除数组的第一项。
|
|
|
11
-1
我知道这是一个老问题,但现在有一个节点模块可以实现这个功能,叫做 fixed-array |
|
|
12
-1
使用shift和push时 在固定长度数组中,必须在长度控制之前或之后进行选择,才能在添加或拒绝新项之前从数组的开头或结尾删除项。。我最快的解决方案就是这样。 如果 使用just键访问数组 可以很容易地控制和预期固定大小的行为。对象和数组都可以使用。 |
|
|
code-geek · Jquery根据单选按钮选择隐藏或显示文本字段 1 年前 |
|
|
Alex · 在轻量级中同时解构和不解构变量 1 年前 |
|
|
Ângelo Rigo · ReactJS映射:如何迭代[关闭] 1 年前 |
|
|
bairog · 从按属性筛选的对象数组字典中创建值数组 1 年前 |
|
|
lokiuucx · JS对象属性返回未定义,尽管对象属性应该有值 1 年前 |