前端数组合并-数组去重
需求是进出口数据何在一起给桑基图用
数组是请求两个接口
get(arr) {//合并数据
let leftParams = {};
await get1(leftParams).then((res) => {for (let index = 0; index < res.data.data.data.length; index++) {const element = res.data.data.data[index];this.leftSankeyData.data.push(element);}for (let index = 0; index < res.data.data.links.length; index++) {const element = res.data.data.links[index];this.leftSankeyData.links.push(element);}});let rightParams = {};await get2(rightParams).then((res) => {for (let index = 0; index < res.data.data.data.length; index++) {const element = res.data.data.data[index];this.leftSankeyData.data.push(element);}for (let index = 0; index < res.data.data.links.length; index++) {const element = res.data.data.links[index];this.leftSankeyData.links.push(element);}});
//使用了最原始的方式合并数据,其实用.concat我觉得更好点,这里要注意的是async异步操作,否则传递到组件中的可能是空
this.leftSankeyData.data = this.unique(this.leftSankeyData.data);
//需要的时候调用去重
},
unique(arr) {const res = new Map();//这个去重是用了map喝set的唯一特性//因为我这个数组的data中有name的字段,所以对象中的name是需要处理重复的内容return arr.filter((arr) => !res.has(arr.name) && res.set(arr.name, 1));},
前端数组位置查询
数组对象的字段相等的查询,查询位置
例如 [{id:1},{id:2}] ,返回的是数组中id等于1的第一次出现的位置
this.areaData.findIndex((item) =>item.id == 1)
例如 [‘1’,‘2’]
数组普通查询,查询位置
this.areaData.indexOf('1')
前端数组是否存在查询
查询对象中是否存在满足这些条件的内容,返回true
let flag = res.data.some((item) =>item.id == _id &&item.parent_id == 74 &&item.childrenList.length <= 0);