javascript - JS 拼接一个数组

标签 javascript arrays splice

我想拼接我的数组,所以我创建了这段代码:

System.log(finalcluster.length);
for (i=0; i <= finalcluster.length; i++){
    if (finalcluster[i] != undefined ){
        System.log(finalcluster[i][0]);
        var remove = finalcluster.indexOf("dump");
        if (finalcluster[i][0] == "dump")
        {
            System.log("couse dump");
            finalcluster.splice(remove,1);
        }
        else {
            System.log("No Problem");
        }
    }
}

在这段代码中有两个删除函数,我知道是因为我尝试了一个整数 i 的索引。

当我执行这段代码时,只删除了两个转储,我认为在我的正确结果之前和之后的两个转储,还有另一个“转储”数组。为什么split不能移动它,因为它可以从关键字之前开始拼接数组。

数组:

[Name][Number]
[dump][0]
[dump][0]
[KEYWORD][KEYNUMBER]
[dump][0]
[dump][0]

这就是数组模型。

最佳答案

您的代码存在一个问题,即您在更改(递减)数组长度时使用 finalcluster.length 按升序迭代 finalcluster。因此,每次满足删除条件时,循环运行的次数都会减少 1,这使得数组的尾部无法访问。示例:

// seems like this would empty out the array
let arr = [1, 2, 3, 4]
for (let i = 0; i < arr.length; i++) {
   arr.splice(i, 1)
}

console.log(arr); // [2, 4]

您可以通过以相反顺序迭代 finalcluster 来避免此问题

let arr = [1, 2, 3, 4]
for (let i = arr.length - 1; i >= 0; i--) {
   arr.splice(i, 1)
}

console.log(arr)

关于javascript - JS 拼接一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46121961/

相关文章:

javascript - 如何修复我的 HTML5 Canvas 中模糊的进度条?

javascript - Next.js 警告 : Warning: Each child in a list should have a unique "key" prop

javascript - 尝试运行 Webpack 时出现意外错误

c++ - 如何按第一个元素降序对<int,对<int,int>>对数组进行排序?

javascript - 拼接数组中的嵌套对象

linux - 为什么在没有 DMA 的情况下用套接字拼接不能提高性能?

javascript - JQuery 从数组中删除特定元素

javascript - Typescript 和 Javascript ES6、ES.NEXT 类构造函数参数对比

javascript - 如何对 promise 数组的数组执行promise.all,同时保留对这些数组的引用?

javascript - 如何在数组 Javascript 中正确存储和格式化数据