账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    遍历数组删除或者添加之后会出错
    22
    0

    满足某些条件就修改之前项 删除某一项 或者后面添加一项,当只有修改时候没问题,只要有删除或者添加进数组,再之后的就会出现问题,原因是什么 应该怎么改呢

    相关代码

    // var indextimend = video.currentTime;

        special['specialEndTime'] = indextimend;
        specials.push(JSON.parse(JSON.stringify(special)));    
        for(i=0;i<specials.length-1;i++){
            var oldspecstart = specials[i].specialStartTime;
            var oldspecend = specials[i].specialEndTime;
            if(indextime>oldspecstart&&indextimend<oldspecend){
                var endtime = specials[i].specialEndTime;
                specials[i].specialEndTime= indextime;
                console.log('旧的中间部分被覆盖');
                specials.push({'type':specials[i].type,'specialStartTime':indextimend,'specialEndTime':endtime});
            }else if(indextime<oldspecstart&&indextimend>oldspecend){
                console.log('全部覆盖');
                specials.splice(i,1);
                console.log(specials);
            }else if(indextimend>oldspecstart&&indextime<oldspecstart&&indextimend<oldspecend){
                console.log('左覆盖');
            }else if(indextime>oldspecstart&&indextime<oldspecend&&indextimend>oldspecend){
                console.log('右半部分被覆盖');
            }
        }
    
    
    

    你期待的结果是什么?实际看到的错误信息又是什么?

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 念你如初↓ 普通会员 1楼

      在 JavaScript 中,数组是不可变的数据结构,也就是说,一旦创建一个数组,就不能直接修改其元素或大小。如果在修改数组后尝试删除或添加元素,JavaScript 会抛出一个 "Cannot modify array after it has been defined" 或 "Uncaught TypeError: Cannot read property 'push' of undefined" 错误,这两种错误通常在以下情况下发生:

      1. 创建数组并赋值: javascript let myArray = [1, 2, 3]; 在创建数组后,元素只能通过 push() 方法或 unshift() 方法将其添加到数组的末尾。然而,如果你想删除一个元素,通常需要从数组的开头添加它,如下所示: javascript myArray.unshift(0); // 1, 0, 2, 3 这样,元素 0 将被添加到数组的开头,数组的长度变为 2。

      2. 修改数组元素: javascript myArray.push(4); // 1, 0, 2, 4 myArray.unshift(0); // 1, 0, 2, 4 上述代码将修改原数组的元素,因为 push() 方法会直接修改原数组,而 unshift() 方法会将数组的开头添加一个新元素。

      3. 删除数组元素: javascript let myArray = [1, 2, 3]; myArray.pop(); // 1, 2 在这个例子中,我们尝试删除数组中的第一个元素,但由于删除操作是对数组的 length 值进行修改,所以会抛出一个错误。正确的操作应该是: javascript let myArray = [1, 2, 3]; myArray.splice(0, 1); // [1, 2] 这里,我们使用 splice() 方法删除数组的第一个元素,并将其插入到数组的第二个位置,因此数组的长度变为 2。

      总的来说,如果在删除或添加数组元素后试图修改或删除数组的其他元素,JavaScript 会抛出一个错误,因为数组是不可变的。如果需要在修改数组元素后删除它,必须在原始数组的开头添加它,而不能直接在修改后删除元素。如果要删除数组中的一个元素,应使用 splice() 方法,并确保删除操作不会改变数组的其他元素顺序。

    更多回答
    扫一扫访问手机版