js数组依据下标删除元素

1、创建数组
var array = new Array();
var array = new Array(size); //指定数组的长度
var array = new Array(item1,item2……itemN); //创建数组并赋值

2、取值、赋值
var item = array[index]; //获取指定元素的值
array[index] = value; //为指定元素赋值

3、添加新元素
array.push(item1,item2……itemN); //将一个或多个元素加入数组,返回新数组的长度
array.unshift(item1,item2……itemN); //将一个或多个元素加入到数组的开始位置,原有元素位置自动后移,返回  新数组的长度
array. splice(start,delCount, item1,item2……itemN );//从start的位置开始向后删除delCo unt个元素,然后从start的位置开始插入一个或多个新元素

4、删除元素
array.pop() ; //删除最后一个元素,并返回该元素
array.shift(); //删除第一个元素,数组元素位置自动前移,返回被删除的元素
array. splice(start,delCount );//从start的位置开始向后删除delCo unt个元素

5、数组的合并、截取
array.slice(start,end); // 以数组的形式返回数组的一部分,注意不包括 end 对应的元素,如果省略 end 将复制 start 之后的所有元素
array. concat(array1,array2);//将多个数组拼接成一个数组

6、
数组的排序
array.
reverse();//数组反转
array.
sort();//数组排序,返回数组地址

7、数组转字符串
array.
join(separator);//将数组原因用 separator连接起来

列了这么都就是没有发现删除数组元素的方法!于是查了一些资料找到了解决方法。
删除数组元素需要扩展Array原型prototype.

Array.prototype.del=function(index){
        if(isNaN(index)||index>=this.length){
            return false;
        }
        for(var i=0,n=0;i
            if(this[i]!=this[index]){
                this[n++]=this[i];
            }
        }
        this.length-=1;
    };
### 解决 Vue Video Player 中视频重复问题 在 Vue 的 `vue-video-player` 组件中,如果遇到视频重复播放或无法正常切换的问题,可以通过重置 player 的源文件来解决。具体实现方式如下: 通过访问组件实例的 `$refs` 属性,可以直接操作底层的 HTML5 `<video>` 元素或其封装的对象。以下是具体的解决方案代码示例[^1]: ```javascript // 假设当前组件中有 ref="videoPlayer" resetVideoSource() { const videoPlayerInstance = this.$refs['videoPlayer']; if (videoPlayerInstance && videoPlayerInstance.player) { // 清空旧的视频源并设置新的视频源 videoPlayerInstance.player.src(this.sources); // 设置新视频源 videoPlayerInstance.player.load(); // 加载新的视频配置 videoPlayerInstance.player.play(); // 开始播放新视频 } } ``` 上述代码的核心在于调用了 `src()` 方法更新视频地址,并配合 `load()` 和 `play()` 来完成视频的重新加载。 对于更复杂的情况,比如需要动态更换多个视频 URL 或者支持多路流媒体播放,则可以考虑维护一个独立的状态管理器(如 Vuex),并将每次请求到的新视频数据映射至 `playerOptions` 对象中[^2]。例如: ```javascript data() { return { sources: [], // 动态视频源数组 playerOptions: { ... } // 默认初始化选项 }; }, methods: { updateSources(newUrlList) { this.sources = newUrlList.map(url => ({ src: url, type: 'video/mp4' })); setTimeout(() => { this.resetVideoSource(); }, 0); }, resetVideoSource() { const videoPlayerInstance = this.$refs['videoPlayer']; if (videoPlayerInstance && videoPlayerInstance.player) { videoPlayerInstance.player.pause(); // 暂停现有视频 videoPlayerInstance.player.currentTime(0); // 将时间轴归零 videoPlayerInstance.player.src(this.sources); // 更新视频源 videoPlayerInstance.player.load(); // 刷新播放器状态 } } } ``` 此外,在某些情况下,可能还需要清理渲染纹理或其他缓存资源以防止残留画面干扰下一帧显示效果。这通常适用于基于 WebGL 实现的高级场景下,例如 Unity 自带的 `VideoPlayer` 控件会存在类似的遗留画质现象[^3]。此时可采用以下逻辑清除内存占用: ```csharp using UnityEngine; public class ClearRenderTexture : MonoBehaviour { private RenderTexture _rt; void Start() { _rt = GetComponent<VideoPlayer>().targetTexture as RenderTexture; } public void ReleaseResources() { if (_rt != null) { _rt.Release(); // 手动释放关联的 RenderTexture 资源 } } } ``` 以上方法能够有效应对大多数因未完全卸载前次视频而导致的内容覆盖错误情况。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值