gpt4 book ai didi

javascript - 切片数组 - "unexpected item in the bagging area?"

转载 作者:行者123 更新时间:2023-11-28 15:04:37 24 4
gpt4 key购买 nike

我想创建一个在索引之前为空的数组(例如 700)

var a=[];
a[700]=true;

//produces [700:true].length==700

然后每次我随机添加另一个索引(非常接近最后一个索引,可能是 702,703,699...)

我想(在每个新索引上)将数组的长度保留为最高索引号,但删除不在前十个最高索引中的每个索引。

for 循环(其中除了最后 10 个索引之外的所有内容都为 a[i]=null)是不可能的,因为该数组的最后一个索引可能是一个相当大的数字,这会导致迭代代码挂起时间太长!

所以我认为 Array.slice 将是即时的......

我不明白的是,如果我的数组长度为 700,而我这样做:

a=a.slice(a.length-10,a.length-1);

为什么我的数组现在是[700:true].length==701

最佳答案

要删除最后 10 个索引中不存在的 true 值,您可以使用 forEach 迭代 true 元素,这访问存在的条目。然后使用 delete 您可以删除这些条目:

a.forEach ((v, i, a) => {
if (i < a.length - 10) delete a[i];
});

var a=[];

a[700]=true;
a[702]=true;
a[699]=true;
a[692]=true; // this one should be removed

// clean-up:
a.forEach ((v, i, a) => {
if (i < a.length - 10) delete a[i];
});

// show last 13 elements:
for (var i=a.length-13; i<a.length; i++) {
console.log (i, a[i]);
}
// output length
console.log('length: ', a.length);

关于javascript - 切片数组 - "unexpected item in the bagging area?",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39625356/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com