通过迭代从 java 脚本数组中删除元素的最佳方法是什么
What is the best way delete elements from java script array by iterating it?
我写了一段代码,在迭代数组时从数组中删除元素。
func_name: function (elementsArray) {
var orig_Array = [10,20,30,40];
for(var i=0; i < orig_Array.length; i++) {
if(elementsArray.indexOf(orig_Array[i]) > -1) {
orig_Array.splice(i, 1);
i--;
}
}
}
这工作得很好,但是当我发送审查时,我的审稿人说在迭代时操作数组是一种危险的做法,这在 java 等其他语言中会导致 concurrentModificationException。
所以他向我提出了上述要求的两种方法。1.) 将我不想删除的元素存储在一个临时数组中,然后用临时数组重新分配原始数组,这是我为此实现的代码。
func_name: function (elementsArray) {
var tempArray = [];
var orig_array = [10,20,30,40,50];
orig_array.forEach(function (element) {
if (elementsArray.indexOf(element) > -1) {
tempArray.push(element);
}
});
orig_array = tempArray;
}
2.) 存储我要从原始数组中删除的元素的索引,然后以相反的顺序迭代 indexesArray,并使用拼接从原始数组中删除元素,这是我为第二种方法实现的代码。
func_name: function (elementsArray) {
var indexesArray = [];
var orig_array = [10,20,30,40,50];
orig_array.forEach(function(element, index) {
if(elementsArray.indexOf(element) > -1){
indexesArray.push(index);
}
});
}
for (var i = indexesArray.length; i >= 0; i--) {
orig_array.splice(i, 1);
}
有人可以建议哪种是最好的方法,并建议是否有任何其他最佳方法来实现它。
您可以使用 Array 的 filter
方法而不是迭代:
func_name: function (elementsArray) {
var orig_Array = [10,20,30,40];
orig_Array = orig_Array.filter(function(el) {
return elementsArray.indexOf(el) < 0;
});
}
这就是我通常总是从数组中删除项目的方式。就这么简单,然后你可以添加一个循环。
var testArray = ["12","13","14","15"];
var indexItem = testArray.indexOf("14");
if (indexItem >= 0) {
arr.splice( indexItem, 1 );
console.log(testArray);
}
圈
Array.prototype.deleteItem = function(val) {
var indexItem = this.indexOf(val);
if (indexItem >= 0) this.splice(indexItem, 1);
return this;
};
var testArray = ["12","13","14","15"];
var newTestArray = testArray.deleteItem("14");
console.log(newTestArray);
另外,正如后面所说,您可以使用Array的过滤器方法而不是迭代
func_name: function (elementsArray) { var orig_Array = [10,20,30,40]; orig_Array = orig_Array.filter(function(el) { return elementsArray.indexOf(el) < 0; }); }
相关文章:
- 删除对HTML元素的拖动
- 如何覆盖锚点元素's href目标,并在我点击转到目标javascript时删除其他错误
- 从所有元素中删除HTML5验证
- 如何检查元素的内容是否为空,如果为空,请在jquery中删除该元素
- 从组件状态的数组中删除元素
- angularjs删除动态形式元素中的特殊字符
- Mongoose-在更新中删除数组元素
- 从数组中删除元素的最佳方法是:javascript/jquery
- 删除不起作用的父元素和所有子元素
- 一些元素没有从数组中删除
- 正在尝试删除子元素的最后一个子元素
- JavaScript-如何按类查找元素并删除此类
- 正则表达式条件来删除元素
- Small Javascript从动态表单中删除多个元素的问题
- javascript:在元素删除后停止setInterval
- JQUERY:动态 AJAX 和 html 元素删除
- AngularJS ngRepeat元素删除
- AngularJS & lt; select>使用ng-model和ng-options在元素删除时被破坏
- jQuery UI datetimepicker绑定到错误的输入后DOM元素删除
- 防止 jQuery 在元素删除时取消绑定事件