我目前正在开发一个项目,我将数值存储在JS数组中。经过一些更改后,应该再次删除它。我目前使用array.splice方法,如下所示:
function removeA(arr, element) {
var index = arr.indexOf(element);
if (index >= 0) {
arr.splice(index, 1 );
}
return arr;
}
但这似乎给了我Safari的问题。这段代码适用于所有浏览器,如Chrome,Firefox,Opera。但不是在Safari上。它甚至可以在Safari技术预览版中使用。
有没有人有其他选择?
提前致谢:)
答案 0 :(得分:4)
您可以使用内置的过滤器()
var array = [1,2,3,7,4,5,6,7,12,54,7,691];
var array = array.filter(x => x !== 7);
console.log(array);
答案 1 :(得分:4)
您必须在索引前后切片,并concat
结果。请注意,Array.prototype.slice()
不会像Array.prototype.splice()
那样改变原始数组。
var arr = [0, 1, 2, 3, 4, 5, 6, 7];
var index = 5;
var result = arr.slice(0, index).concat(arr.slice(index + 1));
console.log(result);
或者使用ES6和数组传播:
var arr = [0, 1, 2, 3, 4, 5, 6, 7];
var index = 5;
var result = [...arr.slice(0, index), ...arr.slice(index + 1)];
console.log(result);
答案 2 :(得分:1)
JavaScript中array.reduce
的另一种替代方法是 var arr =[1,2,3,2,4,5,6,2];
var newarr = arr.reduce((acc, elem) => elem !== 2 ? acc.concat(elem) : acc, []);
console.log(newarr);
public IEnumerable<SelfAssessment> GetSelfAssessment()
{
return _context.SelfAssessment;
}
答案 3 :(得分:0)
尝试使用slice()
方法
arr = arr.slice(index, 1 );
答案 4 :(得分:0)
抱歉来晚了,但希望它对其他人有用
var arr = [32, 33, 16, 40, 55, 2, 41, 3, 10];
document.write("Array : "+arr);
document.write("<br>");
document.write("Removed Elements : "+mySplice(arr,2,2));
document.write("<br>");
document.write("Processed Array : "+arr);
function mySplice(array,index,count) {
var fixIndex = -1;
var ret = [];
arr = array.filter(function(element) {
fixIndex++;
if((fixIndex >= index && fixIndex < (index+count))) {
ret[ret.length]=element;
return false;
} else {
return true;
}
});
return ret;
}
或者你可以使用简单的版本(注意:它很简单但相反)
var arr = [32, 33, 16, 40, 55, 2, 41, 3, 10];
document.write("Array : "+arr);
document.write("<br>");
document.write("Processed Array : "+mySplice_simple(arr,2,2));
function mySplice_simple(arr,index,count) {
fixIndex = -1;
return arr.filter(function(i) {
fixIndex++;
return !(fixIndex >= index && fixIndex < (index+count));
});
}
或者如果你只需要删除一个元素,那么使用这个
var arr = [32, 33, 16, 40, 55, 2, 41, 3, 10];
document.write("Array : "+arr);
document.write("<br>");
document.write("Processed Array : "+mySplice_simple_v2(arr,2));
function mySplice_simple_v2(arr,index,count) {
fixIndex = -1;
return arr.filter(function(i) {
fixIndex++;
return fixIndex != index;
});
}