Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript中array.splice的替代方案_Javascript_Arrays_Safari_Splice - Fatal编程技术网

JavaScript中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

我目前正在一个项目中工作,我将数值存储在JS数组中。在进行一些更改后,应再次将其删除。我目前使用的array.splice方法如下:

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之外的所有浏览器。该项无法正确删除。