JavaScript中array.splice的替代方案
我目前正在一个项目中工作,我将数值存储在JS数组中。在进行一些更改后,应再次将其删除。我目前使用的array.splice方法如下:JavaScript中array.splice的替代方案,javascript,arrays,safari,splice,Javascript,Arrays,Safari,Splice,我目前正在一个项目中工作,我将数值存储在JS数组中。在进行一些更改后,应再次将其删除。我目前使用的array.splice方法如下: function removeA(arr, element) { var index = arr.indexOf(element); if (index >= 0) { arr.splice(index, 1 ); } return arr; } 但这似乎给了我关于狩猎的问题。这段代码适用于所有浏览器,如C
function removeA(arr, element) {
var index = arr.indexOf(element);
if (index >= 0) {
arr.splice(index, 1 );
}
return arr;
}
但这似乎给了我关于狩猎的问题。这段代码适用于所有浏览器,如Chrome、Firefox和Opera。但不是在旅行中。它甚至可以在Safari的技术预览中使用
有人有别的选择吗
提前感谢:)尝试slice()
方法
arr = arr.slice(index, 1 );
您可以使用内置的过滤器()
var数组=[1,2,3,7,4,5,6,7,12,54,7691];
var array=array.filter(x=>x!==7);
console.log(数组)代码>您必须在索引前后切片,并concat
结果。请注意,Array.prototype.slice()
不会像Array.prototype.splice()那样改变原始数组
var-arr=[0,1,2,3,4,5,6,7];
var指数=5;
var结果=arr.slice(0,索引).concat(arr.slice(索引+1));
控制台日志(结果)代码>JavaScript中的数组的另一种替代方法是数组。reduce
var-arr=[1,2,3,2,4,5,6,2];
var newarr=arr.reduce((acc,elem)=>elem!==2?acc.concat(elem):acc,[]);
控制台日志(newarr)代码>很抱歉迟到了,但希望它对其他人有用
var-arr=[32,33,16,40,55,2,41,3,10];
文件。写入(“数组:”+arr);
文件。写(“
”);
写入(“删除的元素:+mySplice(arr,2,2));
文件。写(“
”);
写入(“已处理数组:“+arr”);
函数mySplice(数组、索引、计数){
var固定指数=-1;
var-ret=[];
arr=数组.过滤器(函数(元素){
fixIndex++;
如果((固定索引>=索引和固定索引<(索引+计数))){
ret[ret.length]=元素;
返回false;
}否则{
返回true;
}
});
返回ret;
}
如果要在指定索引处删除元素,而将所有其他元素保留在数组中,slice
会不会给您相反的结果,将数组仅保留在索引处指定的元素,“删除”所有其他元素?问题是什么?它不会正确删除元素,而是做什么?它是基本的JS,因此,如果这不起作用,您的索引就有问题了,但这不会使它在任何地方都起作用吗?看起来我的答复没有保存。您的解决方案也适用于除safari之外的所有浏览器。该项无法正确删除。