当前位置: 首页 > 知识库问答 >
问题:

我可以在JavaScript中限制数组的长度吗?

常英纵
2023-03-14

我想显示产品浏览历史,所以我将产品id存储在浏览器cookie中。

因为历史记录列表仅限于5项,所以我将cookie值转换为一个数组,然后检查它的长度并删除多余的内容。

下面的代码是我尝试过的,但它不起作用;数组项没有被删除。

我想问一下,如何限制数组长度,使其只能存储5个项目?

如何在数组索引4之后剪切项目?

var id = product_id;
var browseHistory = $.cookie('history');
if (browseHistory != null) {
  var old_cookie = $.cookie('history');
  var new_cookie = '';

  if (old_cookie.indexOf(',') != -1) {
    var arr = old_cookie.split(',');
    if (arr.length >= 5) {
      arr.splice(4, 1)
    }
  }

  new_cookie = id + ',' + old_cookie;
  $.cookie('history', new_cookie, { expires: 7, path: '/' });
} else {
  $.cookie('history', id, { expires: 7, path: '/' });
}

共有3个答案

西门安民
2023-03-14
arr.length = Math.min(arr.length, 5)
郎仰岳
2023-03-14

最快最简单的方法是设置。长度属性设置为所需的长度:

arr.length = 4;

这也是重置/清空阵列的理想方式:

arr.length = 0;

警告:设置此属性也可以使数组比实际长度更长:如果它的长度是2,运行arr.length=4将向它添加两个未定义的项。也许添加一个条件:

if (arr.length > 4) arr.length = 4;

或者:

arr.length = Math.min(arr.length, 4);
杜英范
2023-03-14

您没有正确使用拼接:

arr.splice(4, 1)

这将删除索引4中的1项。看这里

我想你应该使用slice:

arr.slice(0,5)

这将返回位置0到4的元素。

这假设您的所有其他代码(cookies等)都正常工作

 类似资料:
  • 问题内容: 我正在使用jQuery的自动完成功能。当我尝试检索超过17000条记录的列表(每条记录的长度不超过10个字符)时,它超出了长度,并引发错误: 异常信息: 异常类型:InvalidOperationException 异常消息:使用JSON JavaScriptSerializer进行序列化或反序列化时出错。字符串的长度超过了在maxJsonLength属性上设置的值。 我可以为in 设

  • 在GET操作中,我们对查询参数的长度是否还有任何限制。前面我想我用的是255,这似乎增加了,但我不知道增加的限制是什么。 我面临的问题是,我尝试GETendpoint,如http://localhost:8080/data/ids=<5000 comma seaprated ids>,但失败了 但是具有500个ID(如http://localhost:8080/data/ids=<500 comm

  • 我正在尝试查看是否可以在和调度程序上生成100万个。 对于来说,它大部分时间都可以工作,对于1000来说,它有时可以工作,但大部分时间都失败,对于10000来说,它几乎每次都失败,如果我告诉它在上运行它,并且根本不使用的话,它就可以工作。 我怎样才能纠正这种行为呢?

  • 本文向大家介绍javascript 数组的定义和数组的长度,包括了javascript 数组的定义和数组的长度的使用技巧和注意事项,需要的朋友参考一下 本文提供一款简单的js入门教程,这是一款js数组定义与数组长度实例教程,如果你正在学习js数组的话,我们这里告诉你如何定义数组以及增加数组与数组长度计算实例。 先来看看如何定义数组 或者数组直接量: 下面看一下,在数组后面增加一个元素 数组的长度

  • 问题内容: 我想知道如何初始化整数数组,使其大小和值在程序执行过程中发生变化,有什么建议吗? 问题答案: 是的:使用ArrayList。 在Java中,“普通”数组是固定大小的。您必须给它们一个尺寸,并且不能扩展或收缩它们。要更改大小,您必须创建一个新数组并复制所需的数据-这效率低下,给您带来痛苦。 幸运的是,有许多内置类可以实现通用的数据结构以及其他有用的工具。您需要检查Java 6 API的完

  • 问题内容: 假设我有类,并且其中的类具有可读和可写的属性: 是否可以只使用该方法而只使用该方法? 问题答案: 不可以,无法分配每个类别的访问权限。 考虑将您的类分为单独的接口,以便每个类仅获得一个具有所需接口的对象。例如: 当然,这涉及安全性,但这应该使您朝正确的方向进行思考。