我想创建一个空白的数组,直到索引为止(示例700)
var a=[];
a[700]=true;
//produces [700:true].length==700
然后每次我随机添加另一个索引(非常接近最后一个索引702,703,699 ...)
我想(在每个新索引上)将数组的长度保留为最高索引号,但要摆脱不在前十个最高索引中的每个索引。
一个
for
循环(其中a [i] = null除最后10个索引以外的所有内容)是不可能的,因为此数组的最后一个索引可能是一个很大的数字,这将导致迭代代码挂起太久!所以我想
Array.slice
将是即时的...我不明白的是,如果我的数组长度为700,而我这样做:
a=a.slice(a.length-10,a.length-1);
为什么我的数组现在为
[700:true].length==701
? 最佳答案
要摆脱最后10个索引中没有的true
值,可以用true
迭代forEach
元素,该元素仅访问存在的条目。然后使用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 - 切片阵列-“装袋区域中的意外物品?”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39625356/