前端数组操作,方法(持续更新)

发布于:2024-07-01 ⋅ 阅读:(37) ⋅ 点赞:(0)

前端数组合并-数组去重

需求是进出口数据何在一起给桑基图用
数组是请求两个接口

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
						);

网站公告

今日签到

点亮在社区的每一天
去签到