我有一个Numbers数组,我正在使用该.push()方法向其中添加元素.
有没有一种简单的方法从数组中删除特定元素?相当于像array.remove(number);.
我必须使用核心的JavaScript - 无框架是不允许的.
上下文:我正在构建一个读取RSS提要的小站点,并在后台更新/检查提要.我有一个数组来存储要显示的数据,另一个存储已经显示的记录的ID.
问题:在事情开始变慢或缓慢之前,Javascript中的数组可以容纳多少项.我不是在对数组进行排序,而是使用jQuery的inArray函数进行比较.
该网站将保持运行,并且更新并且不太可能经常重新启动/刷新浏览器.
如果我应该考虑从数组中清除一些记录,那么在限制之后删除一些记录的最佳方法是什么,比如100项.
我知道JavaScript函数可以接受"任意"数量的参数.
function f(){};
f(1,2,3,4 /*...*/);
Run Code Online (Sandbox Code Playgroud)
但我想知道实际上有多少"任何"可以限制?
比如说,让我说一百万个参数f().那会有用吗?或者翻译龙骨?
我猜测最大值是(a)特定于实现或(b)(2^32)-1,因为arguments对象是类似数组的.
我没有在语言规范中看到这一点,但我可能没有连接一些点.
浏览器是否可以对可以存储在JavaScript对象中的数据量实施任何限制?如果是这样,有没有办法检测到这个限制?
看来默认情况下,Firefox不会:
var data;
$("document").ready(function() {
data = [];
for(var i = 0; i < 100000000000; i++) {
data.push(Math.random());
}
});
Run Code Online (Sandbox Code Playgroud)
在我的系统耗尽之前,这会继续消耗越来越多的内存.
由于我们无法检测可用内存,有没有其他方法可以告诉我们接近这个限制?
更新
我正在开发的应用程序依赖于非常快的响应时间可用(它是核心卖点).不幸的是,它也有一个非常大的数据集(在较弱的客户端机器上将超过内存).通过战略性地预先加载数据(猜测将被点击的内容),可以大大提高性能.当猜测不正确时,从服务器加载数据的后退工作正常,但服务器往返不理想.利用每一点内存,我可以使应用程序尽可能高效.
现在,它可以让用户"配置"他们的性能设置(最大数据设置),但用户不想管理它.此外,由于它是一个Web应用程序,我必须处理每台计算机的用户设置(因为强大的桌面比旧的iPhone有更多的内存).如果它只是对系统上可用的设置使用最佳设置,那就更好了.但是猜太高也会导致客户端计算机出现问题.
我把这个问题尽可能保持通用,但我确实有一个特定的问题需要在我的应用程序中解决,这个问题的答案会有所帮助.
我正在使用的应用程序使用PHP/MySQL作为其后端,并且设置为使得用户看不到的文本/单词/短语在输出到浏览器的HTML/JS中被硬编码,而是存储在与语言键相关联的数据库表,用于根据用户的语言首选项获取单词/短语的正确翻译.现在这适用于应用程序HTML中存在的文本,但为了使这个系统能够使用javascript文件,所有javascript必须放在.php文件中并包装在<script></script>标签中,并与HTML,CSS等内联.
这会在系统的javascript中产生一些灵活性,因为它不能通过<link>标签包含在外部脚本中(我想除非你手动设置.php文件的标题),也许更重要的是它不能被缩小/打包等服务在生产环境中.
我首先想到的解决这个问题的方法是让一个php脚本放在任何其他javascript之前,它循环遍历语言数据库表中的每个记录,并使用语言键作为数组键创建一个关联的javascript数组,并将它们的值设置为根据用户的偏好翻译的短语.因此,通过这种方式,所有javascript文件都可以根据需要制作成实际的.js文件并进行链接,缩小,打包等,并且只需从创建的主语言数组中引用它们所需的短语(即alert(LANGUAGE.some_text);)
唯一的问题是,这个数组中的元素数量很容易进入数千甚至更大.回到我原来的问题,基于普通PC,javascript数组的可接受最大大小是多少?或者我开始时完全错误地攻击这个问题?