前端javascript:ArrayObject过滤数组元素的几种解决方法

171 阅读2分钟

在项目开发中经常会遇见对数组元素进行过滤的方法,你们有用过几种解决方法呢?

1、如何在对象数组中去除不符合条件的一个数组元素,并返回一个新的数组,请写出你的方法?

例如:

let arrayObject=[{fileId:"0001",name:"file0",size:"2000"},
{fileId:"0002",name:"file1",size:"2000"},
{fileId:"0003",name:"file2",size:"2000"},
{fileId:"0004",name:"file3",size:"2000"}
,{fileId:"0005",name:"file4",size:"2000"}....],
其中数组元素中fileId,是每个元素的唯一标识ID;请过滤掉fileId=="00025"的数组元素,并返回新的对象数组:

方法1:

 /**
		  * @description  数组中过滤出不符合条件的对象数组;
		  * 使用arrayObject.filter(item=>{return  new arrayObject});
		  * @return new Array;
		  * */
		  toFilterConditionArray(arrayobject,fileId){
			  return arrayobject.filter(item=>{
				  return  item.fileId!==fileId;
			  })
		  }

相关笔试题目: 已知过滤条件为一个数组:

let ruleList=[
			{"type":"02",message:"未通过校验规则02"},
			{"type":"03",message:"未通过校验规则03"},
			{"type":"07",message:"未通过校验规则07"},
			{"type":"11",message:"未通过校验规则11"},
			{"type":"12",message:"未通过校验规则12"},
			{"type":"13",message:"未通过校验规则13"},
			{"type":"09",message:"未通过校验规则09"},
			{"type":"10",message:"未通过校验规则10"},
			{"type":"08",message:"未通过校验规则08"}];
			
//待校验数组为:
    let filterTypes=[{fileId:"0001",name:"file0",size:"2000",type:"07"},
                    {fileId:"0002",name:"file1",size:"2000",type:"12"},
                    {fileId:"0003",name:"file2",size:"2000",type:"10"},
                    {fileId:"0004",name:"file3",size:"2000",type:"08"},
                    {fileId:"0005",name:"file4",size:"2000",type:"03"}
                    ],
如上所示:
    定义一个过滤条件数组ruleList,以及一个待校验数组:filterTypes,两个数组中的对象元素都有一个key值为type的属性,
请过滤出ruleList数组元素的key值为type属性,对应的value值,未在filterTypes数组元素对应属性值出现的所有数组元素;  

请写出一个方法:
输入:params:ruleList,filterTypes;
输出:newRuleList=[
                        {"type":"02",message:"未通过校验规则02"},
			{"type":"11",message:"未通过校验规则11"},
			{"type":"13",message:"未通过校验规则13"},
			{"type":"09",message:"未通过校验规则09"}
			]

代码1:

2、简单元素数组,如何去除数组元素中的指定元素,可以改变原数组/(不改变原数组)

例如: let arrayObj=["adele","mongo","delt","selfcure"]

方法1:

removeListItem(arrayObj, val) {
				let index = arrayObj.indexOf(val);
				if (index > -1) {
					arrayObj.splice(index, 1);
				}
			},

写出你认为最优的过滤方法?