其他分享
首页 > 其他分享> > 舆情分析平台问题总结

舆情分析平台问题总结

作者:互联网

舆情分析平台问题总结

去重求交集

原始数据格式

channel_info = {
    '微信':
    {
        '用户类型': ['乘客', '司机'],
        '地区': ['杭州'],
        '性别':['男','女']
    },
   '微博':
       {
        '用户类型': ['乘客', '司机'],
           '地区': ['上海', '北京','杭州'],
       },
   '车主圈':
       {
           '用户类型': ['乘客', '司机'],
           '地区': ['杭州', '上海', '北京']
       },
   '慢车':
       {
           '用户类型': ['司机'],
           '地区': ['杭州', '上海', '北京'],
           '评论类型':['好评','坏评']
       },
}

目标数据格式

//取数据的交集
channel_list:['微信','微博','车主圈','慢车'];
field_list:{
 '用户类型': ['司机'],
 '地区': ['杭州'],
}

方法

const channel_list = Object.keys(channel_info);

const resData = channel_list.map(key => {
        return Object.keys(channel_info[key]).map(item => ({
            	title: item,
            	content: channel_info[key][item]
          		})),
      		});
/*
resData = [
		[
		{title:'用户类型',content:['乘客', '司机']},
		...
		],
	,
	...
]
*/

交集和并集

arr:[[{},{},{}],[{},{}],[{},{}]]
  //数组交集
  arrayRepeatfy = (arr) => {

    let newArry = new Array(); // 数组⽤于返回结果

    if (arr.length > 0) {
      let titleArr = new Array();
      let contentArr = new Array();
      let intersectionTitle = new Array();
      let intersectionCon = new Array();
      for (let i = 0, leni = arr.length; i < leni; i++) {
        let temp = []
        for (let j = 0, lenj = arr[i].length; j < lenj; j++) {
          temp.push(arr[i][j].title);
        }
        titleArr[i] = temp;
      }

      intersectionTitle = titleArr[0];
      if (arr.length == 1) {
        arr[0].map(item => {
          newArry.push({ title: item.title, content: item.content });
        })
      } else {
        for (let i = 0, leni = titleArr.length; i < leni; i++) {
          intersectionTitle = titleArr[i].filter(function (val) { return intersectionTitle.includes(val) })//获取title的交集
        }
        intersectionTitle.map(item => {
          newArry.push({ title: item, content: [] });
        });

        for (let i = 0; i < newArry.length; i++) {
          contentArr.push([])
          for (let j = 0, lenj = arr.length; j < lenj; j++) {
            arr[j].map((item) => {
              if (newArry[i].title === item.title) {
                contentArr[i].push(item.content);
              }
            });
          }

          contentArr.map((itemArr, i) => {
            intersectionCon = itemArr[0];
            itemArr.map(item => {
              intersectionCon = item.filter(function (val) { return intersectionCon.includes(val) });
            });
            newArry[i].content = intersectionCon;

          })
        }
      }
    }
    return newArry
  }

  //数组并集
  arrayNonRepeatfy = (arr) => {
    let map = new Map();
    let newArry = new Array(); // 数组⽤于返回结果
    for (let i = 0; i < arr.length; i++) {
      if (map.has(arr[i].title)) { // 如果有该key值
        map.set(arr[i].title, true);
      } else {
        map.set(arr[i].title, false); // 如果没有该key值
        newArry.push({ title: arr[i].title, content: [] });
      }
    }

    for (let i = 0; i < newArry.length; i++) {
      arr.map((item) => {
        if (newArry[i].title === item.title) {
          let temp = newArry[i].content.concat(item.content);
          newArry[i].content = [...new Set(temp)]; //去重
        }
      })
    }
    return newArry
  }

ANTD table

展开列不对齐

ant-design Table组件错位/对不齐
react使用antd table组件固定表头后,表头和表体列不对齐以及配置fixed固定左右侧后行高度不对齐

设置单元格背景

antd table oncell 设置单元格背景

更新数据未渲染页面

React的Table组件在更新dataSource时,未重新渲染页面

轮询 长连接 推送

长连接
前端和后台进行WebSocket长连接和axios轮询的方法(vue框架)

标签:总结,map,arr,title,平台,item,newArry,let,舆情
来源: https://blog.csdn.net/chuoye_sweet_tea/article/details/114076176