首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JS拼接数组

问JS拼接数组
EN

Stack Overflow用户
提问于 2017-09-09 01:43:09
回答 2查看 156关注 0票数 3

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

代码语言:javascript
复制
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");
        }
    }
}

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

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

数组:

代码语言:javascript
复制
[Name][Number]
[dump][0]
[dump][0]
[KEYWORD][KEYNUMBER]
[dump][0]
[dump][0]

这就是数组模型。

EN

回答 2

Stack Overflow用户

发布于 2017-09-09 02:17:09

代码的一个问题是,在更改(递减)数组长度的同时,使用finalcluster.length以升序迭代finalcluster。因此,每次满足remove条件时,循环运行的次数都会减少1,从而使数组的尾部不可达。示例:

​

代码语言:javascript
复制
// 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来避免此问题

​

代码语言:javascript
复制
let arr = [1, 2, 3, 4]
for (let i = arr.length - 1; i >= 0; i--) {
   arr.splice(i, 1)
}

console.log(arr)

​

票数 1
EN

Stack Overflow用户

发布于 2017-09-09 02:09:02

如果不拼接,则需要递增i,或者拼接并递减i。到目前为止,拼接和递增跳过了背靠背的转储。

为了更好地解释它,你说转储在索引1和2。如果你在1处拼接,在索引2处的东西现在在索引1处,但你正在使我看索引2……

代码语言:javascript
复制
System.log(finalcluster.length);
    for (i=0; i <= finalcluster.length;){
        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++;
            }
        }
    }

如果不拼接,上面的代码将递增i。否则,它会将i保持在其当前索引,以避免跳过索引。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46121961

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档