我是靠谱客的博主 开放小蝴蝶,最近开发中收集的这篇文章主要介绍JavaScript Array模拟C#list RemoveAll实现删除符合条件的元素,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

作为一个跨平台多语言编程爱好者的我来说,当我用了一次C#list 的linq的RemoveAll后,再敲JavaScript 的数组想也用这个方法才发现这语言压根是弱爆了,不得已准备自己实现一下JS的Array的几个删除数据的方法。

注意:有不少网友采用的是逆向思维,从原数组提取出符合条件的数组的方式来规避JS Array 没提供linq那样RemoveAll,但是这会导致多一次内存开辟,而且原数组没有改变,

并非最优解 

JS中Array 删除元素,主要利用原生Array的函数Array.splice

splice函数可以说是一个功能全面的函数

定义和用法

splice() 方法用于插入、删除或替换数组的元素。

语法

arrayObject.splice(index,howmany,element1,.....,elementX)
参数描述
index

必需。规定从何处添加/删除元素。

该参数是开始插入和(或)删除的数组元素的下标,必须是数字。

howmany

必需。规定应该删除多少元素。必须是数字,但可以是 "0"。

如果未规定此参数,则删除从 index 开始到原数组结尾的所有元素。

element1可选。规定要添加到数组的新元素。从 index 所指的下标处开始插入。
elementX可选。可向数组添加若干元素。

splice应用例子

var arr = new Array(6)
arr[0] = "George"
arr[1] = "John"
arr[2] = "Thomas"
arr[3] = "James"
arr[4] = "Adrew"
arr[5] = "Martin"
document.write(arr + "<br />")
arr.splice(1,1,"William")
document.write(arr + "<br />")
//结果如下
/*
George,John,Thomas,James,Adrew,Martin
George,William,Thomas,James,Adrew,Martin
*/
我们该怎么利用splice,很简单我们我对准数组索引index,然后arr.splice(index,1)这样一个一个删就行但是要注意,没删除一个元素后面的元素索引自动往前对齐,数组长度也会减小,那么看到这废话不多说,直接上代码,绝对好用包你满意,大笑.

Array.prototype.RemoveAll = function (func) {
var arr = this;
var len = arr.length;
if (func == undefined) { alert("数组RemoveAll参数不能为空"); return; }
for (var i = 0; i < len; i++) {
var entity = arr[i];
var result = false;
if (func && func(entity) === true) {
arr.splice(i, 1);
len--;
i--;
}
}
}
用法超级Easy

var arr = new Array(6)
arr[0] = {name:"George",age:11};
arr[1] = {name:"John",age:11}";
arr[2] = {name:"Thomas",age:11}";
arr[3] = {name:"James",age:17}";
arr[4] = {name:"Adrew",age:18}";
arr[5] = {name:"Martin",age:19}";

//下面开始移除arr中年龄<18岁的未成年的小伙伴

arr.RemoveAll(function(obj){   return obj.age<18;  });//只要一句话,没错就是这么简单





最后

以上就是开放小蝴蝶为你收集整理的JavaScript Array模拟C#list RemoveAll实现删除符合条件的元素的全部内容,希望文章能够帮你解决JavaScript Array模拟C#list RemoveAll实现删除符合条件的元素所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部